React Native Android运行报错:未计算指定文件的SHA-1
报错信息
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
blockListin your metro.config.js and make sure it isn't excluding the file path.at DependencyGraph.getSha1 (C:\Users\usr\app\realapp\node_modules\metro\src\node-haste\DependencyGraph.js:215:13)
at Transformer._getSha1 (C:\Users\usr\lace\realapp\node_modules\metro\src\Bundler.js:26:26)
at Transformer.transformFile (C:\Users\usr\lace\realapp\node_modules\metro\src\DeltaBundler\Transformer.js:107:19)
at Bundler.transformFile (C:\Users\usr\app\realapp\node_modules\metro\src\Bundler.js:60:30)
at async Object.transform (C:\Users\usr\app\realapp\node_modules\metro\src\lib\transformHelpers.js:150:12)
at async Graph._processModule (C:\Users\usr\app\lace\realapp\node_modules\metro\src\DeltaBundler\Graph.js:257:20)
at async Graph._traverseDependenciesForSingleFile (C:\Users\usr\app\realapp\node_modules\metro\src\DeltaBundler\Graph.js:249:5)
at async Promise.all (index 1)
at async Graph.initialTraverseDependencies (C:\Users\usr\app\realapp\node_modules\metro\src\DeltaBundler\Graph.js:233:5)
at async DeltaCalculator._getChangedDependencies (C:\Users\usr\app\realapp\node_modules\metro\src\DeltaBundler\DeltaCalculator.js:229:25)
解决步骤
1. 移除项目符号链接并重装依赖
- 检查项目中是否存在
npm link/yarn link创建的符号链接,执行解除命令:# yarn环境 yarn unlink <关联的包名> # npm环境 npm unlink <关联的包名> - 强制重装依赖:
yarn install --force # 或npm npm install --force
2. 检查并调整metro.config.js的blockList
- 打开项目根目录的
metro.config.js,找到blockList配置项 - 确保没有排除报错路径
node_modules/@react-native/metro-config/node_modules/@react-native/js-polyfills/console.js,删除相关排除规则,示例配置:const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const config = {}; module.exports = mergeConfig(getDefaultConfig(__dirname), config);
3. 清除缓存并重启服务
- 停止当前Metro服务,清除Metro缓存:
npx metro-cache clean - 可选:清除Android构建缓存
cd android && ./gradlew clean && cd .. - 重新启动应用:
yarn android
4. 禁用Watchman(备选方案)
- 在
metro.config.js中添加配置,用文件系统监听替代Watchman:module.exports = { watcher: 'fs', resolver: { disableHierarchicalLookup: true, }, }; - 重启Metro服务
内容的提问来源于stack exchange,提问作者NOt rnaomd

