我正在使用 React-Native,当我使用 Xcode 和 iPhone 模拟器运行 AwesomeProject 时,一切正常,但是当我连接 iPad 并在 iPad 上构建项目时,应用程序启动时,我在 iPad 上收到错误消息:
“无法连接到开发服务器。确保节点服务器已启动 跑步。操作无法完成(NSURLErrorDomain 错误 -1004)”。
我还确保节点包正在运行。我什至重新启动了 Xcode,并通过运行 npm start 重新开始。
您能帮忙吗?
在您的 AppDelegate.m 上,您必须更新
jsCodeLocation
并将 localhost
替换为您的机器 IP 地址。
要么将编译后的源代码捆绑到您的应用程序中,这也被注释为
AppDelegate.m
上的选项 2。您下载编译后的代码,并将其添加到您的 Xcode 项目中。
另一个可能导致完全相同错误的潜在问题是 iOS9 中的应用程序传输安全性 (ATS)——这发生在我身上,即使其他所有设置都正确。 请参阅我的描述和解决方案https://stackoverflow.com/a/34880394/2397068。
我准备了一个小说明,将有助于解决这个问题。
当您的应用程序无法连接到服务器时,您将看到如下消息:
在 Xcode 项目中打开文件 AppDelegate.m 并查找
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
您必须将此地址替换为您的本地地址。
要在 Mac OS X 中查找本地 IP 地址,请打开终端应用程序(位于 /Applications/Utilities),然后键入
ipconfig getifaddr en1
(无线)或 ipconfig getifaddr en0
(以太网)。
您可以在浏览器中查看。您将看到 React Native 调试器页面
只需将 AppDelegate.m 中的
localhost
替换为您的 IP 地址即可。就我而言,从 localhost
到 192.168.1.100
。
再次在 Xcode 中运行您的应用程序。
就我而言,我刚刚安装了一个非常旧版本的node.js(版本0.8.6)。 将node.js更新到0.12.2版本后,
react-native init AwesomeProject
创建的默认项目完美运行。
从我的角度来看,这似乎很愚蠢,但对我来说,最终我的智能手机/iPhone 不在 PC/Mac 的同一个路由器上。 该设备要么关闭了 Wi-Fi,要么以同一网络的“桥接模式”连接到另一个路由器。
SOLUTION: Connect both devices on the exactly same Wi-Fi router.