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

Joh*_*Doe 5 reactjs react-native metro-bundler

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

然后应用程序将显示以下错误: 在此处输入图片说明

为了让我的应用程序正常运行,我需要使用启动地铁捆扎机npm start,然后运行react-native run-ios

虽然这是一种解决方法,但以前我没有这个问题,只需运行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>
Run Code Online (Sandbox Code Playgroud)

Joh*_*Doe 9

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

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

  1. 打开Xcode并定位Build Phases到您的项目下。
  2. 点击Editor-> Add Build Phase-> Add Run Script Build Phase在此处输入图片说明
  3. 点击选项卡Run Script底部新生成的Build Phases
  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
Run Code Online (Sandbox Code Playgroud)
  1. 通过Xcode. Metro Bundler现在应该会自动启动。
  2. 保存更改后,下次react-native run-ios在终端中运行时,Metro Bundler将自动启动,No bundle URL present错误将不再存在。