几天前,当我在设备上从Xcode构建并运行我的react本机应用程序时,我意识到即使我将我的方案设置为Debug,该应用程序仍然是从预先捆绑的文件加载。除此之外,其他一切都像开发者模式。我可以摇动设备和开发人员弹出窗口,在控制台中我得到输出,并对本机也做出反应日志:
运行应用程序" XXXXX"与appParams: {" rootTag":1," initialProps":{}}。 DEV === true,开发级别 警告为ON,性能优化为OFF
因此,当我尝试从开发人员meny重新加载时,它确实重新加载但是带有消息
从预先捆绑的文件中加载
我试图删除应用程序,验证调试方案,清理构建,构建并再次运行,没有任何不同的结果。
有没有人知道可能导致这种情况的原因(我在发布计划之前一直在运行应用程序,但从来没有遇到过这个问题),以及我如何能够回到"正常"?
不幸的是我不知道如何重现这个。
感谢您的时间!
在我的情况下,就像@while1指出有关wifi一样。我的设备和计算机没有连接到同一个wifi。然而,我在我工作的地方找到了一个网络,即使计算机和设备都连接到这个网络,它仍然无法正常工作(可能会以某种方式受到保护?)。 ANyway,当我从iPhone上将我的互联网连接分享到我的电脑时,应用程序终于从我的电脑上加载了数据。所以它确实是iPhone无法连接到我的电脑,因此加载预先捆绑的文件。
答案 0 :(得分:30)
在本机0.40.0的反应中,React本地尝试自己猜测捆绑位置。请查看以下几点是否有帮助:
确保你的AppDelegate.m有这一行:jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]
;
检查您的设备,您的Xcode mac在同一个wifi上运行。在IOS内部,本地尝试自己猜测ip。
首先尝试通过命令行运行应用程序,因此开发包装器服务器正在运行,然后通过设备中的xcode运行应用程序。
答案 1 :(得分:12)
所以你的问题就在这里:
更改AppDelegate.m中的代码:
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; // comment this line
jsCodeLocation = [NSURL URLWithString:@"http://xxx.xxx.x.xx:8081/index.ios.bundle?platform=ios&dev=true"]; //uncomment this line
干杯:)
答案 2 :(得分:4)
由于我遇到了同样的问题,以上几点对我来说都不起作用。通过执行以下步骤,我使它起作用。
它应该解决此问题。
答案 3 :(得分:3)
对于那些连接到同一Wi-Fi,但使用与localhost不同的IP地址(您已在RCTWebSocketExecutor.m
中设置)的人:
检查Xcode调试控制台,如果可以找到以下错误:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
然后使用Codesingh的答案。顺便说一下,我建议使用#ifdef DEBUG
指令,如下所示:在构建变体之间切换时,您不必手动更改它:
#ifdef DEBUG
jsCodeLocation = [NSURL URLWithString:@"http://xxx.xxx.xxx.xxx:8081/index.ios.bundle?platform=ios&dev=true"];
#else
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
#endif
答案 4 :(得分:0)
答案 5 :(得分:0)
对我来说,我不小心在macOS弹出窗口中单击了Deny(拒绝),而不是Allow(允许),询问是否接受到“节点”的传入网络连接。
打开系统偏好设置->安全和隐私->防火墙->防火墙选项,并找到设置为阻止的节点的行,然后对其进行更正以解决我的问题!
答案 6 :(得分:0)
对我来说,这是在将Mac更新到Mojave之后发生的。事实证明,通过更新,防火墙设置已更改为阻止所有传入连接...谢谢Stian Jensen让我走上检查防火墙的轨道!
我做了什么:
答案 7 :(得分:0)