我正在尝试运行我的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 文件中,但我仍然得到该错误。
1条答案
按热度按时间ac1kyiln1#
您遇到的错误似乎与React Native Expo应用程序使用的JavaScript引擎有关。爱马仕是一个为运行React Native应用程序而优化的JavaScript引擎,它是Expo中的默认引擎。
以下是您可以采取的一些步骤来排除故障并解决此问题:
1.清除缓存:请尝试清除Metro Replayer缓存和watchman监视列表。您可以通过在项目目录中运行以下命令来执行此操作:
字符串
然后,再次尝试运行您的应用。
1.检查依赖项:确保应用的依赖项是最新的。运行以下命令以更新项目中的所有依赖项:
型
此外,检查
package.json
中是否有任何不推荐使用或不兼容的依赖项,并根据需要更新它们。1.验证项目结构:确保你是在正确的项目目录下运行Metro。当你运行
npm start
或expo start
命令时,你应该在你的React Native Expo项目的根目录下。1.检查模块错误:“Invariant Violation”错误通常表示您的某个JavaScript模块有问题。检查您的代码是否有任何问题或丢失的导入。此外,检查您是否在条目文件中正确调用了
AppRegistry.registerComponent
(通常为index.js
)。1.降级爱马仕:如果您仍然遇到爱马仕的问题,您可以尝试降级到旧版本,方法是将以下内容添加到您的
app.json
:型
如果使用的爱马仕版本有问题,这可能会有帮助。
1.验证Node和npm:确保你使用的是兼容版本的Node.js和npm。在项目文档中检查Expo和React Native版本所需的版本,并确保你已经安装了它们。
1.检查环境变量:确保没有任何可能影响应用行为的冲突环境变量。检查与JavaScript引擎设置相关的任何环境变量。
1.检查其他错误:检查项目中代码中的任何其他错误,并检查控制台输出中更具体的错误消息,这些消息可能会为您提供有关导致问题的原因的其他线索。
如果您已经尝试了所有这些步骤,但仍然遇到问题,请提供有关您的项目的更多信息,例如您的
package.json
文件,任何其他错误消息以及项目的结构,以便我可以提供更具体的帮助。