我正在创建一个新的 React Native 应用程序,但在 iOS 模拟器上运行它时遇到了诸如“不存在捆绑 URL”之类的错误。
在 iOS 上运行应用程序的命令:
react-native run-ios --port=8089
Run Code Online (Sandbox Code Playgroud)
我尝试了以下链接中建议的所有可能的解决方案。
react-native 中“不存在捆绑 URL”是什么意思?
https://www.andrewcbancroft.com/2017/04/22/solving-react-natives-no-bundle-url-present-error/
以及许多其他参考资料,但根本没有运气。
解决方案 1:我尝试AppTranportSecurity在info.plist.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
解决方案 2:尝试从 iOS 文件夹中删除构建并重新构建。
rm -r buildreact-native run-ios再次运行解决方案 3:在Package.json文件中的行下方添加
"build:ios": "react-native bundle --entry-file ./index.js --platform ios --bundle-output ios/main.jsbundle"
Run Code Online (Sandbox Code Playgroud)
一点运气都没有。
甚至我的 Metro Builder 在端口 8089上运行,因为8081被 MacFee 防火墙应用程序使用。
最后,我解决了上述问题。以下是帮助我解决此问题的解决方案。
所以正如我在我的问题中提到的,我尝试了所有发布在 SO 或其他门户上的解决方案,但没有成功。因此,我对生成的 iOS 代码进行了更多调查,并了解了以下几点。
main.jsbundle在该文件中生成但没有 JS 代码,因此这是我在此应用程序中的第一个问题。解决方案:尝试main.jsbundle使用以下react-native命令生成您的文件并在您的 iOS 文件夹中验证它。
react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios'
Run Code Online (Sandbox Code Playgroud)
或者
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
Run Code Online (Sandbox Code Playgroud)
奎:它会做什么?
并且:它将手动生成main.jsbundle包含所有 JS 代码的文件。
main.jsbundle文件后,我尝试再次运行该应用程序并收到相同的错误“ No bundle url ”解决方案:我发现手动生成的文件没有添加到我的项目目标中,所以我将main.jsbundle文件添加到我的应用程序目标中。
步骤 1:main.jsbundle在 XCode 中选择 Your -> Project Navigator 窗格
步骤 2:在目标成员资格部分检查相关项目目标。
最后一步是为 iOS 添加构建脚本命令 package.json
"scripts": {
...
"bundle:ios": "react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios",
"postinstall": "npm run bundle:ios"
}
Run Code Online (Sandbox Code Playgroud)
希望这能帮助那些在这个问题上挣扎的人。
在过去的 3 天里,我确实在努力解决这个问题。
感谢 StackOverflow 和 Github 问题。
参考链接:https : //github.com/facebook/react-native/issues/18472
| 归档时间: |
|
| 查看次数: |
7763 次 |
| 最近记录: |