当我运行一个反应原生项目时,我得到一个错误no bundle URL present,但我不知道我做了什么错误,我很困惑。
no bundle URL present
我也遇到了这个问题(第一次开始使用React Native)。当ios模拟(react-native run-ios)正在运行时,问题消失了——我运行了npm install,然后再次运行react-native run-ios。在终端窗口中,它显示正在捆绑,然后模拟器显示欢迎屏幕。
react-native run-ios
npm install
react-native init PropertyFinder行之后的查看简报链接尝试使用npm start(这对我有用)
react-native init PropertyFinder
npm start
========================================================================
16.9更新
我的端口8081被McAfee阻塞。直接使用不同的端口react-native start --port=8082和react-native run-ios --port=8082不能工作
react-native start --port=8082
react-native run-ios --port=8082
几乎所有的解都试过了。但是什么都不管用。
"react": "16.9.0", "react-dom": "^16.12.0", "react-native": "0.61.5",
解决方案:
在Xcode中搜索8081,并将它们全部替换为8082。然后运行相同的命令来构建和运行应用程序。应用程序运行顺畅
react-native start --port=8082 react-native run-ios --port=8082
检查你的网络代理,最好关闭它。
或者你应该找其他方法来维护打包服务器
对我来说,问题是它不能创建JS包。当从Xcode构建时,它没有声明错误,所以你无法知道这一点。要查找错误,请运行以下命令。
react-native bundle——platform ios——dev false——entry-file index.ios.js——bundle-output ./ios/release/main。Jsbundle——assets-dest ./ios/release/main.jsbundle < /代码> < / p > 对我来说,错误是缺少PureRenderMixin组件。解决方案可以在这里找到:https://github.com/facebook/react-native/issues/13078。基本上你必须手动安装react@16.0.0-alpha.3。这可以通过运行这个命令来完成。 npm i --save react@16.0.0-alpha.3 现在每个人都遇到了这个问题,因为新版本的react alpha正在发布(特别是alpha.5),它们破坏了react原生构建。
对我来说,错误是缺少PureRenderMixin组件。解决方案可以在这里找到:https://github.com/facebook/react-native/issues/13078。基本上你必须手动安装react@16.0.0-alpha.3。这可以通过运行这个命令来完成。
npm i --save react@16.0.0-alpha.3
现在每个人都遇到了这个问题,因为新版本的react alpha正在发布(特别是alpha.5),它们破坏了react原生构建。
这是react-native v0.42.1的一个问题。尝试关闭所有终端和XCode实例并运行:
launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist watchman version react-native run-ios
关闭模拟器和终端。打开一个新的并进入你的项目,然后像这样升级你的react-native:
react-native upgrade
问题在:当bundle执行失败时,RCTFatal中的无限递归。
如错误信息所示:
同意Xcode/iOS许可证需要管理员权限,请运行"sudo xcodebuild -license",然后重试此命令。
执行以下命令成功:
sudo xcodebuild -license
我也有同样的错误,只能通过Xcode运行应用程序。react-native run-ios没有工作。要解决这个问题,你需要删除YOUR_PROJECT/ios/build/的build文件夹。在此之后,你应该能够再次通过react-native run-ios运行你的应用程序。希望这能有所帮助。
YOUR_PROJECT/ios/build/
build
在重新启动我的mac后,我也遇到过这种情况。当你在模拟器上运行应用程序时,会打开一个launchPackager终端窗口。我关闭了该窗口并终止了进程(我也关闭了模拟器),然后再次运行react-native run-ios,一切正常。
在我的案例中,通过重新启动adb服务器来解决问题:adb kill-server && adb start-server
adb
adb kill-server && adb start-server
我也遇到过这样的问题……问题是封装器没有运行,似乎可能是因为我的默认shell是zsh。react-native轮胎打开一个新的终端窗口并运行.../node_modules/react-native/packager/launchPackager.command,但这没有运行。手动运行(并保持运行)为我解决了这个问题。
.../node_modules/react-native/packager/launchPackager.command
通过以下方法解决错误No bundle URL present:
No bundle URL present
rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios
echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc
现在你可以用一个简单的别名快捷方式运行React Native iOS构建(不用担心出现一些常见的红色死亡错误屏幕):
rni
确保launchPackage.command在终端中运行,然后重试运行。它将构建捆绑包。它有点像webpack-dev-server。
launchPackage.command
在info.plist中的NSExceptionDomains字典中检查你的“localhost”键
如果它不存在,就会导致错误。
是什么帮我解决了这个问题:
cd
YOUR_PROJECT/ios
rm -r build
或者,你可以打开Finder,导航到YOUR_PROJECT/ios并删除build文件夹。
然后再次运行react-native run-ios。
来源:安德鲁·班克罗夫特
假设你正在使用nvm和安装的多个版本的节点,下面是解决方案:
nvm
node v6.9.5
npm install -g react-native-cli
nvm alias default 6.9.5
问题是,你通过nvm安装了多个版本的节点,为了安装react-native-cli,你已经切换或安装了最新版本的节点,它还没有被标记为指向nvm的默认节点。当你运行react-native run-ios时,会打开另一个新的终端窗口,其中默认的nvm不是指向你安装react-native-cli的节点版本。只要遵循上面的设置,我希望能有所帮助。
react-native-cli
关闭当前正在运行的React Packager终端窗口,然后从Xcode重新运行你的iOS项目应该可以工作。
React Packager
我发现绕过这个最简单/最快的方法是在模拟器中退出应用程序(2 x Cmd + Shift + H)并重新启动。
Cmd + Shift + H
大多数情况下,此问题发生在DNS查找/ IP查找无法找到本地主机时。
尝试将localhost ip添加到etc主机文件中。
你可以在etc主机文件(/etc/hosts)中添加以下代码行
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 l。ocalhost
确认此问题 你可以在safari上点击bundle url(如果你在chrome中尝试,这将解决,但safari将无法解决它)。http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false < / p >
我正在使用RN 0.49.5。 我试过很多方法,但没有一个有效。最后我解决了这个问题。 这很简单。< / p >
RN 0.49.5
主要思想是将localhost更改为127.0.0.1,但这不是RN告诉你的地方。它在RCTBundleURLProvider。m#- (BOOL)isPackagerRunning:(NSString *)主机中。
localhost
127.0.0.1
代码更改: <代码> oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; 这是好的模拟器。如果是设备,只需将ip地址更改为您的机器的
请确保.plist文件中的ATS设置是正确的。
你可以在/ ios / \{\{project_name}} / Info.plist找到这个文件
Localhost必须定义为异常请求目标,如下所示:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>localhost</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>
*(不要忘记在发布版本中删除此选项..)
这是因为您的客户机无法连接到您的打包器服务器。
如果你是一个像我一样的中国程序员,我认为你可能会使用VPN通过GFW。当您的VPN工具处于“全局模式”时,您的所有请求都将通过世界旅行,无法到达本地主机
试试“自动代理模式”。
如果你不是来自中国,或者你的VPN设置已经是“自动代理模式”,我建议你关闭你的打包服务器,再试一次。
另一件对我有用的事情是,在xcode中打开项目,然后清理并构建它。通常它会重新运行打包服务器并解决问题。
原因:
这是因为应用程序无法找到服务器(通过javascript代码为UI服务)。
npm run start
yarn start
Loading dependency graph, done.
react-native run-ios/android
解释:
React Native包含2部分:
react-native run-ios/android是构建本机部分,然后部署到设备上,并在设备上启动应用程序(模拟器/模拟器/真实设备)。这通常需要3~4分钟才能完成。
npm run start或yarn start是构建javascript部分,并启动开发服务器为应用程序提供构建的UI。这通常需要30秒才能完成。
通常情况下,javascript部分先完成,然后是本地部分。(根据他们使用的时间)。
=>这只适用于第一次构建(新鲜构建)。
=>重建:
原生部分只需要10~15秒来检查更改,因为在javascript部分构建和服务之前,原生部分=>没有更改。(我不确定javascript部分是否被重建,但它比本地部分花费了更长的时间)
这就是为什么我们有这个问题,应用运行时要求的东西还不存在。
奖金:
react-native init <app_name>
在这个答案上使用的时间是相对于我的机器=>可能不同于其他人。
main.jsbundle
小开 我也有同样的问题。但我的问题是我的Mac和iPhone不在同一个wifi网络中。 因此,确保它们都在同一个网络中,并再次重建。如果不是这样,试试其他成员在这里提到的解决方案。
我也有同样的问题。但我的问题是我的Mac和iPhone不在同一个wifi网络中。
因此,确保它们都在同一个网络中,并再次重建。如果不是这样,试试其他成员在这里提到的解决方案。
当您不允许通过localhost进行不安全连接时,或者您试图通过http接受不安全连接时,就会发生此问题。
要解决这个问题,在info.plist上添加这个:
info.plist
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> <key>NSAllowsLocalNetworking</key> <true/> </dict>
...发生这种情况的另一个原因是,如果你已经安装了Visual Studio Code React原生工具,但你一直试图在终端中使用react本机:它第一次会工作,但随后它会停止并向你显示红色的no bundle屏幕。
从vscode启动react native工作得很好…
使用命令
react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle
首先关闭模拟器,然后在终端上运行这些程序
npm install react-native run-ios
对于我的用例,我必须删除node_modules目录并运行npm install。
$ rm -rf node_modules (make sure you're in the ios project directory) $ npm install
如果你得到错误“dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.58。Dylib”,执行以下操作:
$ brew uninstall --force node --ignore-dependencies node $ brew uninstall icu4c --ignore-dependencies icu4c $ brew install icu4c $ brew unlink icu4c && brew link icu4c --force $ brew install node $ npm install
试着加上这句话:
export FORCE_BUNDLING=true对我有用。在控制台中有一个警告,它没有被捆绑。
export FORCE_BUNDLING=true
我在我的macbook上通过电缆和wifi连接到网络,关闭wifi,点击运行,它就工作了!
我们通过删除构建脚本中的SKIP_BUNDLING选项来解决这个问题,RN文档建议添加该选项来加快调试构建。真正的修复(为了我们的原因)包含在RN 0.57中:
https://github.com/facebook/react-native/issues/20553
在终端react-native start中运行:
react-native start
cd your react native app directory/ react-native start
它将启动打包器,现在不要关闭这个终端窗口,在另一个终端窗口运行你的项目。这是我唯一想要的,让它正常工作。
试着运行这段代码:
$ sudo xcodebuild -license
这可能会解决问题。这对我很有用。
我是这样做的:
当我们有nvm管理的多个版本的节点,而默认版本不是react-native运行的预期版本时,可能会发生此问题。(确保它是Node 8.3或更新版本)
打开一个新终端并运行在$PATH中找到的node版本。
如果它发现一个不被react native支持的旧版本的node,它可能会给出这个错误。
确保在打开新终端时,$PATH变量已经指向预期的节点版本(确保它是node 8.3或更新版本)。
这为我解决了问题。祝你好运。
我尝试了下面所有的解决方案,但都不起作用:
NSAppTransportSecurity
我是这样解决的:
sudo vi /private/etc/hosts
sudo code /private/etc/hosts
127.0.0.1 localhost 255.255.255.255 localhost ::1 localhost
关闭全局代理(shadowsocks)
这是因为你可能已经关闭了地铁捆绑窗口,或者它可能崩溃了。只需在项目目录下打开另一个终端/cmd并运行npm start。通过运行npm start React Native将再次启动MetroBundler窗口。在捆绑器完成BUNDLE过程后,只需重新加载应用程序,你就可以开始了。
BUNDLE
react-native run-android
打开终端窗口
cd into YOUR_PROJECT/ios
使用rm -r build删除构建文件夹
然后在Xcode中打开你的项目并运行一次。它将在启动服务器时运行,并创建main.jsbundle文件。
现在如果你再次从终端运行react-native run-ios,它将像预期的那样工作。
希望能有所帮助!
确保你的项目中有.jsbundle
添加
react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios
尝试重新打开项目
我也遇到了同样的问题,我通过修改AppDelegate.m文件来解决它。我改变了
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
来
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
这对我来说很有效:)
执行如下命令:
killall -9 node rm -rf ios/build react-native run-ios
它将打开launchpacker .command,应用程序将安装在ios模拟器上
这个问题发生在我身上,因为地铁捆绑机启动并收到焦点,而我正在另一个窗口的键盘上打字。我不小心输入了新打开的终端窗口,导致地铁捆扎机崩溃。重新运行react-native run-ios和耐心地等待修复了它。
如果您正在运行IOS模拟器,请确保需要运行此命令
一旦你运行以上命令metro bundler将启动,然后运行react- negative run-ios它将工作。
react-native: "0.60.4"
watchman watch-del-all
react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
这将生成新的主线。jsbundle文件。
你不会再次看到错误
我尝试了以上所有的解决方案,都不适合我。这对我来说是有效的,如果上面的答案不适合你,你可以尝试一下。
在Xcode上打开你的项目工作区,删除[project - name]/main.jsbundle中的main.jsbundle文件
创建一个新的main。Jsbundle,在同一个文件夹中。{右键单击->选择新文件->它将打开一个对话框,寻找Others部分,->选择Empty ->文件命名为main.jsbundle ->保存
Others
Empty
然后回到项目的终端。执行如下命令:
我真心希望这能帮到你。
我正在运行iOS模拟器,这个方法有效:
1. 清理本地项目
1.a For Android项目
cd android gradlew clean
1.b用于iOS项目
cd ios xcodebuild clean
2. 清理你的反应物贮藏
2.a如果你正在使用npm
npm start -- --reset-cache
2.b如果你用的是纱线
yarn cache clean
之后,您可以再次运行您的项目。
我知道这个问题有很多答案,但这些都没有帮助我。下面的解决方案帮助我解决了这个错误。
你必须进入你的设置,允许这个特定的应用程序。
源" launchpacker .command "无法打开,因为它来自一个未识别的开发人员
Mcafee Macbook用户:
Sudo launchctl remove com.mcafee.agent.macmn
以下步骤:
youtube链接:https://www.youtube.com/watch?v=eCs2GsWNkoo
也许你忘了这一步
cd ios && pod install
对于Ios系统,请遵循以下步骤,
我也有这个屏幕,但我的问题是前一天晚上我一直在使用代理(使用Charles监视来自RN env的网络请求)。
一旦我关闭代理应用程序构建/运行在我的模拟器没有任何问题。
我必须运行“react-native start”;在一个单独的航站楼。由于某种原因,它不运行了
Edit:另外,它证明这是必要的,因为文件权限没有正确设置。我能够通过在受影响的项目目录中运行以下命令来修复它。
Edit
chmod 777 node_modules/react-native/scripts/launchPackager.command
关闭/打开设备/ mac上的无线网络,重建应用程序
更深层次的调试:查看XCode日志,它可能包含:&;无法连接到服务器&;准确的URL。
如果像我一样,您有一个在终端会话(.bashrc/.bash_profile)启动时执行的命令集,等待输入(在我的情况下,SSH密钥的密码为ssh-add),那么您将注意到它实际上阻止打开的终端启动Metro服务器!
ssh-add
尝试在启动时禁用该命令(或者至少在React Native打开的终端中禁用)。这对我很管用!
在我的情况下,我不小心从Xcode的构建阶段删除了这个脚本。
所以,一定要有这个脚本。如果没有,点击"+“;,选择“新的运行脚本阶段”;然后粘贴下面的代码。
export NODE_BINARY=node ../node_modules/react-native/scripts/react-native-xcode.sh