返回

React Native 中“SHA-1 未计算”错误的解决方法和避免技巧

Android

在 React Native 中解决“SHA-1 未计算”错误

问题

当尝试使用 metro/yarn 在 React Native Android 应用上运行应用程序时,可能会遇到以下错误:

ReferenceError: SHA-1 for file C:\Users\usr\app\node_modules\@react-native\metro-config\node_modules\@react-native\js-polyfills\console.js (C:\Users\usr\app\node_modules\@react-native\metro-config\node_modules\@react-native\js-polyfills\console.js) is not computed. Potential causes: 1) You have symlinks in your project - watchman does not follow symlinks. 2) Check `blockList` in your metro.config.js and make sure it isn't excluding the file path.`

解决方法

1. 排查符号链接

错误消息表明项目中可能存在符号链接,而 watchman(文件监控工具)不支持跟随符号链接。

  • 检查项目中是否存在符号链接。
  • 如果找到符号链接,请将其删除或重命名。

2. 检查 blockList

metro.config.js 文件中的 blockList 属性用于排除某些文件或目录不被 Metro 打包。

  • 打开 metro.config.js 文件。
  • 检查 blockList 中是否包含 C:\Users\usr\app\node_modules\@react-native\metro-config\node_modules\@react-native\js-polyfills\console.js 路径。
  • 如果路径存在,请将其从 blockList 中删除。

3. 清除 Metro 缓存

Metro 缓存可能会损坏并导致错误。

  • 导航到项目目录。
  • 运行以下命令:
    • npx react-native start --reset-cache

4. 更新依赖项

过时的依赖项也可能导致此错误。

  • 运行以下命令更新依赖项:
    • npx react-native upgrade

5. 检查 Node.js 版本

确保使用的是受 React Native 支持的 Node.js 版本。

  • 运行以下命令检查 Node.js 版本:
    • node -v

6. 重新启动项目

完成上述步骤后,请重新启动项目。

  • 重新加载应用程序。
  • 如果使用模拟器或设备,请重新运行该应用程序。

避免错误的提示

  • 避免在项目中使用符号链接。
  • 定期检查 metro.config.js 文件中的 blockList
  • 保持依赖项和 Node.js 版本是最新的。

结论

遵循这些步骤,你应该可以解决 React Native 中的“SHA-1 未计算”错误。如果你仍然遇到问题,请查看 React Native 文档或在社区论坛上寻求帮助。

常见问题解答

1. 为什么会出现此错误?

这通常是由项目中的符号链接、metro.config.js 文件中的 blockList 排除错误的文件、损坏的 Metro 缓存、过时的依赖项或不兼容的 Node.js 版本引起的。

2. 我该如何检查是否存在符号链接?

在项目目录中运行以下命令:

find . -type l

3. 为什么 blockList 会导致此错误?

如果 blockList 排除了应打包的文件,则 metro 将无法计算该文件的 SHA-1。

4. 如何更新依赖项?

运行以下命令:

npx react-native upgrade

5. 如何检查 Node.js 版本?

运行以下命令:

node -v