【问题标题】:iOS React Native - The operation couldn’t be completed. No such file or directoryiOS React Native - 操作无法完成。没有相应的文件和目录
【发布时间】:2015-12-04 09:24:14
【问题描述】:
从昨天开始,我无法再测试我的 React-Native 应用程序(无论是在模拟器上还是在设备上)。我确实卸载了Xcode并重新安装。我现在正在使用init AwesomeProject 文件进行测试。 Xcode 报告“构建成功”并开始显示启动屏幕,但随后我收到以下消息
"[error][tid:main] 操作无法完成。没有那个文件或目录"
模拟器包含消息
“RCTFatal”和“RCTBatchedBridge stopLoadingWithError”
等
看起来像这样:
Screenshot of ErrorMessage
重要提示:我能够构建一个干净的仅适用于 iOS 的测试应用,其构建运行成功。
【问题讨论】:
标签:
ios
xcode
react-native
【解决方案1】:
我也遇到过这个问题,我认为它与https://github.com/facebook/react-native/issues/3174 上讨论的相同,问题涉及 IPv4/IPv6。
什么对我有用:我在AppDelegate.m 中输入了一个 IPv6 地址。这适用于模拟器(iOS 8.4/9.0/9.1)和设备(iPhone、iOS 9.1):
- 您的 IPv6 地址是:
ifconfig | grep inet6 | grep -v fe80::
- 在
AppDelegate.m 中用括号括起来,这样:
jsCodeLocation = [NSURL URLWithString:@"http://[abab:1234:1234:abab:aaaa:bbbb:1111:2222]:8081/index.ios.bundle?platform=ios&dev=true"];
更详细的故事,关于AppDelegate.m 中的 IPv4/6 地址:
- 在模拟器中:
- iOS 9.0 和 9.1:
- IPv4 不工作,但主机名如
localhost 可以
- IPv6 工作
- iOS 8.4:
- 在设备上,装有 iOS 9.1 的 iPhone:
【解决方案2】:
在您的 AppDelegate.m 文件中,检查以下行
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
如果路径没有设置为 localhost,模拟器将无法工作。如果您想在手机中运行该应用程序,请使用您的 IP 地址而不是 localhost。