type
status
date
slug
summary
tags
category
icon
password
在本地运行js项目时,进入一个页面后白屏。
这个项目前端用的是React,后端是C++写的wasm。
通常情况下,如果是后端的接口异常,error会指到wasm里,比较明确,这时候查起来也容易。
而这个错误却是这样,让人看起来摸不着头脑,颇为难办。
这时候我们怎么办?
组件报错,这是一个思路,我们可以顺着对应的组件往查,查调用wasm的接口。
通过排除法,我们最终定位到useEffect里的一个wasm方法:
注释掉这段代码,运行正常。
review这个接口的c++代码确实有问题。
到这里,问题找到了,可以告一段落了,但我仍有疑惑,既然是wasm接口的问题,为什么无法捕获。
这得从React的
useEffect
说起。useEffect
是一个React Hook,它允许你在函数组件中执行副作用操作,比如数据获取、DOM操作、设置订阅等。useEffect
会在组件渲染后执行,并且可以根据依赖项数组来控制何时执行。猜想是useEffect的内部机制将异常捕获了,因此没有将错误指向到wasm。
另外我们可以将调用wasm的这个方法放到点击事件里,这样也能捕获到异常,将错误指向到wasm。
- 作者:AndyJMR
- 链接:http://andyjmr.com/technology/error-wasm-js
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。