前提:不管是公司现有的项目,还是根据官方文档初始化的项目都出现了这个问题
可以尝试的解决方式:
第一种:端口问题
检查本地是否有其它进程占用了8081端口,因为Metro打包运行时自动使用8081端口(我就是这个问题 排查了一天 最后发现本地有别的h5项目用的8081)
第二种:不太一劳永逸的方法
1. 先清理项目并重置Metro缓存,依次输入以下命令
cd android
./gradlew clean
2. 返回根目录 cd ..
3. 运行以下命令,这个命令相当于手动打包。并且打包的是生产环境的包、指定了入口文件、指定了bundle的输出目录、指定了静态资源的输出目录。缺陷:每次代码更新都需要执行这个命令
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
坑点:
1. 根据官方文档初始化的项目的pakage.json中缺少依赖项@react-native-community/cli-platform-android,但是在android/settings.gradle中是有使用到的,所以在npm start后报错,需要将这个依赖安装
2. 如果启动后出现一些奇怪的错误,可以多次尝试清除Metro缓存: cd android、./gradlew clean
3. 启动时尽量使用这个命令pnpm start --reset-cache 可以清除缓存,Android Studio的模拟器选项Wipe Data也可以用用
暂时就先这么多 如果后期还有相关的 会更新......
参考文档:
https://stackoverflow.com/questions/55441230/unable-to-load-script-make-sure-you-are-either-running-a-metro-server-or-that-yo?page=2&tab=scoredesc#tab-top
https://medium.com/@adityasingh_32512/solved-unable-to-load-script-from-assets-index-android-bundle-bdc5e3a3d5ff
https://blog.csdn.net/yuxinabc/article/details/107577443