React Native 错误类型错误:无法读取null的属性“getConstants”,js引擎:爱马仕

ymdaylpp  于 2023-11-21  发布在  React
关注(0)|答案(1)|浏览(325)

我正在尝试运行我的React Native Expo应用程序,但我遇到了这个错误:

ERROR  TypeError: Cannot read property 'getConstants' of null, js engine: hermes
 ERROR  Invariant Violation: "main" has not been registered. This can happen if:
* Metro (the local dev server) is run from the wrong folder. Check if Metro is running, stop it and restart it in the current project.
* A module failed to load due to an error and `AppRegistry.registerComponent` wasn't called., js engine: hermes

字符串
我尝试将“jsEngine”:“爱马仕”添加到我的 app.json 文件中,但我仍然得到该错误。

ac1kyiln

ac1kyiln1#

您遇到的错误似乎与React Native Expo应用程序使用的JavaScript引擎有关。爱马仕是一个为运行React Native应用程序而优化的JavaScript引擎,它是Expo中的默认引擎。
以下是您可以采取的一些步骤来排除故障并解决此问题:
1.清除缓存:请尝试清除Metro Replayer缓存和watchman监视列表。您可以通过在项目目录中运行以下命令来执行此操作:

watchman watch-del-all
rm -rf node_modules
rm -rf /tmp/metro-*
npm cache clean --force
npm install

字符串
然后,再次尝试运行您的应用。
1.检查依赖项:确保应用的依赖项是最新的。运行以下命令以更新项目中的所有依赖项:

npm update


此外,检查package.json中是否有任何不推荐使用或不兼容的依赖项,并根据需要更新它们。
1.验证项目结构:确保你是在正确的项目目录下运行Metro。当你运行npm startexpo start命令时,你应该在你的React Native Expo项目的根目录下。
1.检查模块错误:“Invariant Violation”错误通常表示您的某个JavaScript模块有问题。检查您的代码是否有任何问题或丢失的导入。此外,检查您是否在条目文件中正确调用了AppRegistry.registerComponent(通常为index.js)。
1.降级爱马仕:如果您仍然遇到爱马仕的问题,您可以尝试降级到旧版本,方法是将以下内容添加到您的app.json

"hermes": {
  "enabled": true,
  "commandUnlink": "node node_modules/hermes-engine/unlink"
}


如果使用的爱马仕版本有问题,这可能会有帮助。
1.验证Node和npm:确保你使用的是兼容版本的Node.js和npm。在项目文档中检查Expo和React Native版本所需的版本,并确保你已经安装了它们。
1.检查环境变量:确保没有任何可能影响应用行为的冲突环境变量。检查与JavaScript引擎设置相关的任何环境变量。
1.检查其他错误:检查项目中代码中的任何其他错误,并检查控制台输出中更具体的错误消息,这些消息可能会为您提供有关导致问题的原因的其他线索。
如果您已经尝试了所有这些步骤,但仍然遇到问题,请提供有关您的项目的更多信息,例如您的package.json文件,任何其他错误消息以及项目的结构,以便我可以提供更具体的帮助。

相关问题