目前我遇到出现在Unable to download JS bundle 的情况有两种
在android真机测试时 app 出现server 访问错误,在因为在测试模式中app需要访问开发机上的server服务进行加载js文件
解决方法:如果是android 5.0设备 可以使用USB方式访问,在测试手机与开发机用USB线连接时 运行以下命令然后在app界中摇晃手机或按菜单键,在开发菜单中选择 Dev Setting -> Debug server host & port for device 然后填上 127.0.0.1:8081
$ adb reverse tcp:8081 tcp:8081
如果是 5.0以下设备请将开发机与测试手连接到同一网络,然后在app界中摇晃手机或按菜单键,在开发菜单中选择 Dev Setting -> Debug server host & port for device 然后把你的开发机IP地址和server 端口填上 端口默认是8081(例:192.168.1.100:8081)一般情况在开发机中访问 localhost:8081/index.android.bundle?platform=android 会打印出你要加载的JS代码
但现在他会显示出跟下面类似的错误代码
{"message":"TransformError: /Users/Zachary/Desktop/Android Work/Recat/MyProject/node_modules/react-native/node_modules/react-transform-hmr/node_modules/react-proxy/node_modules/react-deep-force-update/lib/index.js: [BABEL] /Users/Zachary/Desktop/Android Work/Recat/MyProject/node_modules/react-native/node_modules/react-transform-hmr/node_modules/react-proxy/node_modules/react-deep-force-update/lib/index.js: Unknown option: /Users/Zachary/Desktop/Android Work/Recat/MyProject/node_modules/react-native/node_modules/react-transform-hmr/node_modules/react-proxy/node_modules/react-deep-force-update/.babelrc.stage","type":"TransformError","errors":[{}]}
这个情况在app中我见过有两中不同的错误显示方式。。
第一个就是显示Unable to download JS bundle
第二个显示为 The development server returned response error code:500
无疑第二个才是这个错误最正确的打开方式,但我不明白为什么会有显示第一种的情况
为什么会出现这种错误呢?
原因是:在新版本在升级了使用 Bable6 ,可以有些依赖的库不是使用这个版本所以会出现这个错误。所以要把这个 bable 删除,升级依赖
1,先删除依赖包:
rm -rf node_modules
npm install
2,修改package.json文件
"scripts": {
"clean:babelrc": "find ./node_modules -name react-packager -prune -o -name '.babelrc' -print | xargs rm -f","postinstall": "npm run clean:babelrc"
}