javascript - React Native IOS 生产版本 : RCTFatalException crash and SocketProtocolError YellowBox

标签 javascript ios xcode react-native

我有一个react-native应用程序(目前仅限iOS) - 来自JS背景并且不熟悉XCode,我发现有关为iOS创建生产版本的文档非常稀疏。根据https://facebook.github.io/react-native/docs/running-on-device-ios.html上的一个模糊的句子:

JS 包将根据您的应用程序方案为开发或生产构建(调试 = 带警告的开发构建,发布 = 带性能优化的缩小生产构建)。要更改方案,请导航到 xcode 中的“产品”>“方案”>“编辑方案...”,并在“调试”和“发布”之间更改“构建配置”。

但是,在 XCode v7.3 中,当我单击“产品”>“方案”>“编辑方案”时,我会看到以下内容(没有“在调试和发布之间更改构建配置”的选项):

Product > Scheme > Edit Scheme

我了解了如何在手机上本地运行,以及在模拟器上运行与在手机上运行的区别。它在模拟器和插入的手机上运行良好。

现在,当我存档应用程序、保存为临时分发、上传到 TestFairy、在手机上下载并运行它时 - 我经常看到诸如 Yellowbox 警告之类的内容:

YellowBox

还有像这样的可疑崩溃(由 TestFairy 记录):

Application Specific Information:
*** Terminating app due to uncaught exception 'RCTFatalException: Could not connect to development server.

Ensure the following:
- Node server is running and available on the same network - run 'npm start' from react-native root
- Node server URL is correctly set in AppDelegate

URL: http://192.168.0.21:8081/index.ios.bundle?platform=ios', reason: 'Could not connect to development server.

Ensure the following:
- Node serv...'

Last Exception Backtrace:
0   CoreFoundation                      0x22939b8b __exceptionPreprocess (in CoreFoundation) + 127
1   libobjc.A.dylib                     0x220f6dff objc_exception_throw (in libobjc.A.dylib) + 39
2   CoreFoundation                      0x22939ad1 -[NSException initWithCoder:] (in CoreFoundation) + 1
3   myapp                            0x000b1ad5 0x98000 + 105173
4   myapp                            0x000cb01f 0x98000 + 208927
5   myapp                            0x000c9149 0x98000 + 201033
6   libdispatch.dylib                   0x224cbcbf _dispatch_call_block_and_release (in libdispatch.dylib) + 11
7   libdispatch.dylib                   0x224cbcab _dispatch_client_callout (in libdispatch.dylib) + 23
8   libdispatch.dylib                   0x224d0559 _dispatch_main_queue_callback_4CF (in libdispatch.dylib) + 1533
9   CoreFoundation                      0x228fb7d5 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ (in CoreFoundation) + 9
10  CoreFoundation                      0x228f9ccf __CFRunLoopRun (in CoreFoundation) + 1591
11  CoreFoundation                      0x22848289 CFRunLoopRunSpecific (in CoreFoundation) + 517
12  CoreFoundation                      0x2284807d CFRunLoopRunInMode (in CoreFoundation) + 109
13  GraphicsServices                    0x23e64af9 GSEventRunModal (in GraphicsServices) + 161
14  UIKit                               0x26f732c5 UIApplicationMain (in UIKit) + 145
15  myapp                            0x0009d4e7 0x98000 + 21735
16  libdyld.dylib                       0x224f4873 start (in libdyld.dylib) + 3

那么,创建用于在 XCode 中分发的 React Native 生产版本的正确步骤是什么?

最佳答案

更新

我找到了这个问题的赞成答案How to build .IPA for React Native? 解决问题。我将保留此问题,因为该帖子中的问题与我的问题无关,但它解决了使用命令行创建生产构建的问题:

react-native 包 --dev false --entry-file index.ios.js --bundle-output ios/main.jsbundle --platform ios

并取消 AppDelegate.m 中这一行的注释:

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main"withExtension:@"jsbundle"];

关于javascript - React Native IOS 生产版本 : RCTFatalException crash and SocketProtocolError YellowBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36994376/

相关文章:

ios - iPad 上的 UIDatePicker 布局问题

javascript - interact.js 拖动不适用于 chrome 移动模拟器

ios - Web Socket 无法在 iOS 中使用 objective-c 打开

javascript - 自定义下拉菜单未按预期工作

ios - Segue 被调用了两次,我不确定为什么 - Swift

ios - 应用 NSDiffableDataSourceSnapshot 时 ViewController 中 UICollectionView 的拉动刷新跳转

iphone - 图像加载到模拟器中但不加载到设备中?

ios - 如何在 iOS 中以 pageadmin 身份在 Facebook 页面上发布状态提要?

javascript - Zeit (Vercel) 现在无服务器身份验证请求因 CORS 而失败

IE10 中的 JavaScript 键盘事件