未计算文件的 React-Native Bundle Error 错误 SHA-1

React-Native Bundle Error error SHA-1 for file is not computed

我在创建 react-native 应用程序包时遇到此错误。

我正在执行命令 react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios

error SHA-1 for file /usr/local/lib/node_modules/react-native/node_modules/metro/src/lib/polyfills/require.js (/usr/local/lib/node_modules/react-native/node_modules/metro/src/lib/polyfills/require.js) is not computed. Run CLI with --verbose flag for more details.
ReferenceError: SHA-1 for file /usr/local/lib/node_modules/react-native/node_modules/metro/src/lib/polyfills/require.js (/usr/local/lib/node_modules/react-native/node_modules/metro/src/lib/polyfills/require.js) is not computed
    at DependencyGraph.getSha1 (/usr/local/lib/node_modules/react-native/node_modules/metro/src/node-haste/DependencyGraph.js:258:13)
    at /usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/Transformer.js:211:26
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (/usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/Transformer.js:46:24)
    at _next (/usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/Transformer.js:66:9)
    at /usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/Transformer.js:71:7
    at new Promise (<anonymous>)
    at /usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/Transformer.js:63:12
    at Transformer.transformFile (/usr/local/lib/node_modules/react-native/node_modules/metro/src/DeltaBundler/Transformer.js:236:7)
    at /usr/local/lib/node_modules/react-native/node_modules/metro/src/Bundler.js:87:34

react-native 信息 命令输出

info Fetching system and libraries information...
System:
    OS: macOS Mojave 10.14.3
    CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
    Memory: 1.73 GB / 8.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 10.16.0 - /usr/local/bin/node
    Yarn: 1.19.1 - /usr/local/bin/yarn
    npm: 6.13.4 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
    Android SDK:
      API Levels: 23, 25, 26, 27, 28, 29
      Build Tools: 27.0.3, 28.0.3
      System Images: android-29 | Google Play Intel x86 Atom
      Android NDK: 20.1.5948944
  IDEs:
    Android Studio: 3.4 AI-183.6156.11.34.5522156
    Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native: 0.61.5 => 0.61.5 
  npmGlobalPackages:
    create-react-native-app: 2.0.2
    react-native-cli: 2.0.1
    react-native: 0.61.5

我认为这是关于 react-native-cli 的版本。

你应该尝试更新。

npm i -g react-native-cli

为了解决我的问题,我使用带有 --force 选项的 运行 命令。

npm install -i -g --force react-native-cli

此问题是由于使用旧的 react-native 版本配置旧项目而引发的。然后尝试 运行 最新的 react-native 版本与新项目。

我无法发表评论,所以使用 Punita 所说的 npm install -i -g --force react-native-cli。它在解决 SHA-1 问题时起作用。

但是请不要对任何与 npm 相关的事情使用 sudo。谢谢。

使用 npx 安装 运行 关于 windows 10

npx react-native run-android

于 linux

npx react-native start 

我在 Mac 中使用

解决了这个问题
npx react-native start

对我来说,我安装了错误的包。

而不是这个:

npm i -g react-native

确保你这样做:

npm i -g react-native-cli

为了解决我的问题,我有 运行 命令和 --force 选项。

npm install -i -g --force react-native-cli

我想补充一点,当我尝试 运行 grade 命令构建 Android 发布 (./gradlew bundleRelease).

我发现问题的原因是使用 Dropbox 同步这个 React Native 项目所属的文件夹,使用 Dropbox 的“自动备份你的电脑”功能,我备份了我的用户文档文件夹通过 Dropbox。本质上,我会得到这样的错误:

error SHA-1 for file C:\Users\Ted Zhu\Documents\my-app\MyAppWin\index.js (C:\Users\Ted Zhu\Dropbox\PC\Documents\my-app\MyAppWin\index.js) is not computed. Run CLI with --verbose flag for more details. ReferenceError: SHA-1 for file C:\Users\Ted Zhu\Documents\my-app\MyAppWin\index.js (C:\Users\Ted Zhu\Dropbox\PC\Documents\my-app\MyAppWin\index.js) is not computed

我会在错误消息中注意到,它引用了具有两个不同路径的同一个文件 (index.js):

  • C:\Users\Ted Zhu\Documents\my-app\MyAppWin\index.js
  • C:\Users\Ted Zhu\Dropbox\PC\Documents\my-app\MyAppWin\index.js

这一定是因为 Dropbox 创建了文件夹的符号 link,以便它在我的 Dropbox 文件夹中有一个路径。这似乎会导致相关文件有两个指向同一文件夹的路径,并欺骗 Metro 捆绑器认为没有为其中一个项目文件创建 SHA 哈希。

解决方案是将此项目移动到 Dropbox 未备份的其他目录。就我而言,我刚刚在我的用户主目录中创建了一个新文件夹。然后我能够成功地 运行 gradle 命令来构建 Android 应用程序。

对我来说,我通过安装正确的 react-native-cli 修复了它:

yarn global remove react-native-cli
yarn global add react-native-cli

对我来说,全局 cli 更新不起作用。

我只是 运行 类似 yarn react-native bundle 的命令...有效!

yarn react-native bundle --reset-cache --entry-file index.js --platform ios --bundle-output test.bundle --dev false