我在React Native和iOS上使用CodePush。当使用CodePush脱机 bundle 包连接到CodePush的chrome调试器时,出现以下错误:

Uncaught NetworkError:
Failed to execute 'importScripts' on 'WorkerGlobalScope':
The script at 'file:///Users/naderdabit1/Library/Developer/CoreSimulator/Devices/115F136F-…ation/B0ECCD9D-8274-4308-A9C7-BAA2746FDF02/StudentStatus.app/main.jsbundle'
failed to load.

react-native - 连接到Chrome调试器后,无法运行CodePush脱机捆绑包。在iOS上使用React Native-LMLPHP

当我切换到本地 bundle 包或禁用Chrome调试器时,错误消失了。

有任何想法吗?谢谢。

最佳答案

当将JS包位置设置为[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]文件中的AppDelegate.m并启用Chrome Debugging时,您能确认没有看到相同的错误吗?据我了解,您只能在应用程序从打包程序加载JS bundle 包时启用Chrome调试,并且由于使用[CodePush bundleURL]从磁盘加载JS bundle 包(二进制文件中包含的 bundle 包或最新的CodePush更新),因此自然不支持Chrome调试方案。

我们已经完成工作,以确保CodePush插件能够与打包程序协同工作,以便开发人员可以使用其自然的调试工作流程(例如livereload,Chrome支持),而无需更改任何内容即可支持测试/与之共存CodePush。我们的文档当前建议针对iOS使用以下解决方案,并且我很想知道是否存在我们缺少并可以改善的情况:

NSURL *jsCodeLocation;

#ifdef DEBUG
    jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
#else
    jsCodeLocation = [CodePush bundleURL];
#endif

10-06 08:43