Bundler 不会自动加载(No bundle URL present error)

Bundler does not load automatically (No bundle URL present error)

将我的 React Native 应用程序更新到最新版本 (0.60.4) 后,使用 react-native run-ios 启动我的应用程序将导致我的应用程序在没有 Metro Bundler 的情况下启动。

应用程序随后会显示以下错误:

为了让我的应用程序正常运行,我需要使用 npm start 和 运行 react-native run-ios 启动 Metro Bundler。

虽然这是一个解决方法,但以前我没有遇到过这个问题,只需 运行ning react-native run-ios 就会自动启动 Metro Bundler。我该如何解决?

编辑: 我的 NSAppTransportSecurity 来自 Info.plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

按照以下步骤操作。我也遇到过这个问题,解决方法是:

  1. 将你的 react native cli 更新到最新版本。
  2. 如果使用 androidX,请使用 jetifier 和 npx。
  3. 更新您的包JSON,其中的开发依赖项如下所示
"devDependencies": {
   "@babel/core": "^7.4.3",
   "@babel/runtime": "^7.4.3",
   "babel-jest": "^24.7.1",
   "jest": "^24.7.1",
   "metro-react-native-babel-preset": "^0.53.1",
   "react-test-renderer": "16.8.3"
},

启动 metro bundler 需要四处走动。 使用 : npm start --reset cache 这将启动你的 metro bundler。

我想这个问题在将现有项目升级到 React Native 时很常见 v0.60.+

对于在 Mac 上遇到此问题的任何人:

  1. 打开 Xcode 并在您的项目下找到 Build Phases
  2. 点击 Editor -> Add Build Phase -> Add Run Script Build Phase
  3. 点击 Build Phases 选项卡底部新生成的 Run Script
  4. 粘贴以下代码:
export RCT_METRO_PORT="${RCT_METRO_PORT:=8081}"
echo "export RCT_METRO_PORT=${RCT_METRO_PORT}" > "${SRCROOT}/../node_modules/react-native/scripts/.packager.env"
if [ -z "${RCT_NO_LAUNCH_PACKAGER+xxx}" ] ; then
if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then
if ! curl -s "http://localhost:${RCT_METRO_PORT}/status" | grep -q "packager-status:running" ; then
echo "Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly"
exit 2
fi
else
open "$SRCROOT/../node_modules/react-native/scripts/launchPackager.command" || echo "Can't start packager automatically"
fi
fi
  1. 通过 Xcode 启动您的项目。 Metro Bundler 现在应该会自动启动。
  2. 保存更改后,下次您在终端中 运行 react-native run-ios 时,Metro Bundler 将自动启动并且 No bundle URL present 错误将不再存在。