React Native运行报DuplicateError重复文件或模拟文件错误如何解决?
React Native Amplify 重复文件报错解决方案
错误根源
当前报错的核心原因是AWS Amplify自动生成的#current-cloud-backend和backend两个目录下存在完全同名的云函数配置文件,React Native 内置的Metro打包器默认会扫描项目全目录的可识别模块,两个路径下的CreatePaymentIntent/src/package.json被识别为重复模块,触发构建失败。
你看到的「未连接任何应用」警告属于次生问题:构建失败导致应用没有正常完成启动,开发服务无法和运行中的应用建立连接,修复重复文件问题后该警告会自动消失。
修复步骤
方案1:配置Metro忽略冲突目录(推荐,无侵入无需修改Amplify配置)
- 找到项目根目录下的
metro.config.js文件,不存在则手动新建 - 新增忽略
#current-cloud-backend目录的配置,示例如下:
// 未使用Expo的项目用下面这行导入 // const { getDefaultConfig } = require('metro-config'); // 使用Expo的项目用下面这行导入 const { getDefaultConfig } = require('expo/metro-config'); module.exports = (async () => { const defaultConfig = await getDefaultConfig(__dirname); return { ...defaultConfig, resolver: { ...defaultConfig.resolver, // 新版Metro用blockList参数,旧版用blacklistRE参数,二选一即可 blockList: /(.*\/#current-cloud-backend\/.*)/, // blacklistRE: /(.*\/#current-cloud-backend\/.*)/ } }; })();
- 配置完成后清空缓存重启开发服务即可:
- 普通RN项目执行命令:
npx react-native start --reset-cache - Expo项目执行命令:
npx expo start --clear
- 普通RN项目执行命令:
方案2:修改Amplify配置禁止生成冲突目录
如果你不需要本地调试云函数代码,可以直接配置Amplify忽略生成#current-cloud-backend目录:
- 打开
amplify/.config/project-config.json文件 - 新增配置项:
"ignoreFilePath": ["#current-cloud-backend"] - 执行
amplify pull重新拉取云端配置即可
验证效果
重启开发服务后无DuplicateError报错即代表修复完成,待应用成功启动后,开发者菜单可以正常呼出,「未连接任何应用」的警告会自动消失。
内容的提问来源于stack exchange,提问作者Viren Patel
相关产品推荐
相关产品推荐

