使用React Native CLI运行报错unable to load script且无blacklist.js如何解决?
unable to load script. Make sure you are either running metro(run 'react-native start') or that your bundle 'index.android.bundle' is packaged correctly for release
React Native 0.60+ 版本已经移除了单独的blacklist.js配置文件,相关排除规则已经整合到项目根目录的metro.config.js中,不需要再找这个文件,可按以下步骤排查修复:
第一步:优先排查基础运行问题
- 先确认Metro服务是否正常启动,新开一个终端窗口执行
npx react-native start,保持窗口不关闭,再重新执行npx react-native run-android - 确认你的Android设备/模拟器和开发电脑处于同一局域网,没有代理或防火墙拦截8081端口
- 可以在设备的RN调试菜单(摇一摇调出)的
Settings→Debug server host for device中,填入你电脑的局域网IP加8081端口,例如192.168.1.102:8081,重启应用再试
第二步:缺失index.android.bundle的修复方案
如果确认Metro正常运行还是报错,按以下步骤生成bundle文件:
- 先在项目的
android/app/src/main目录下新建assets文件夹,如果已经存在可以跳过这一步 - 在项目根目录执行打包命令:
npx 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
- 执行完成后重新运行
npx react-native run-android即可
第三步:原blacklist.js相关需求的替代方案
如果你之前查到的方案需要修改blacklist.js排除冗余文件,可直接在根目录的metro.config.js中添加resolver.blacklistRE配置即可,示例配置如下:
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const config = { resolver: { blacklistRE: /(node_modules\/.*\/node_modules\/react-native\/.*/, // 把你需要排除的路径正则写到这里即可 } }; module.exports = mergeConfig(getDefaultConfig(__dirname), config);
修改完成后重启Metro服务即可生效。
内容的提问来源于stack exchange,提问作者user14299934
相关产品推荐
相关产品推荐

