背景
在 ios 上使用 debug 模式的时候,报错:info Opening flipper://null/React?device=React%20Native
,我找到了这个 issue
其实也可以看到现在打开 debug,是 open debug,也不是之前的 debug for chrome 了,这是因为使用新的 Hermes 引擎,从 React Native 0.70 版本开始 Hermes 已经默认启用,无需开发者再做任何配置。具体看 这里
并且 react native debugger 也不能用了,这里去 https://github.com/jhen0409/react-native-debugger 这里看到
JavaScript 运行时环境
在使用 React Native 时,你的 JavaScript 代码可能会运行在三个不同的环境上:
- 从 React Native 0.70 版本开始,React Native 会默认使用Hermes引擎,它是专门为 React Native 而优化的一个新式开源 JavaScript 引擎。
- 如果 Hermes 被禁用或是较早的 React Native 版本,则会使用JavaScriptCore,也就是 Safari 所使用的 JavaScript 引擎。但是在 iOS 上 JavaScriptCore 并没有使用即时编译技术(JIT),因为在 iOS 中应用无权拥有可写可执行的内存页(因此无法动态生成代码)。
- 在使用 Chrome 调试时,所有的 JavaScript 代码都运行在 Chrome 中,并且通过 WebSocket 与原生代码通信。此时的运行环境是V8 引擎。(社区也有提供可以在生产环境中使用的react-native-v8)
方式一:使用flipper调试【推荐】
后面我看 ignite 也升级了 “react-native” 到 “0.72.5”
npx ignite-cli@next new PizzaApp
方式二:弃用hermes,使用默认的 jscore(JSC)
还有一种方式,找到 Podfile 文件,将 hermes_enabled 改为 false
:hermes_enabled => false
修改完记得重新 pod install
方式三:中间方案
方式二其实是把 hermes 关闭了,一些依赖 hermes 的程序可能有问题。
要不然就是先无视这个报错,在开发的时候使用方式二,然后项目上线的时候再改回去