React Native Amplify添加Lambda后运行npm start报重复文件错误如何解决?
报错原因
该报错由React Native的Metro打包工具触发,默认配置下Metro会扫描项目根目录下所有文件,你存放在Amplify Lambda函数目录内的node_modules和项目根目录的node_modules存在同名模块,被识别为重复文件导致启动失败。
解决方案
按以下三步操作即可解决:
- 修改Metro配置文件
在项目根目录新建/编辑metro.config.js文件,添加目录忽略规则:
const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); // 匹配所有Amplify Lambda函数下的node_modules目录,加入扫描忽略列表 config.resolver.blockList = [ ...config.resolver.blockList, /amplify\/backend\/function\/.*\/node_modules\/.*/, ]; module.exports = config;
- 配置Expo忽略规则
在项目根目录新建/编辑.expoignore文件,添加如下行:
amplify/backend/function/**/node_modules
- 清理缓存重启服务
执行以下命令清空Metro缓存并启动项目:npx expo start --clear
如果上述操作后仍有报错,可以额外执行npm cache clean --force清理npm缓存,再重新安装根目录依赖后启动即可。
内容的提问来源于stack exchange,提问作者Sahan Amarsha
相关产品推荐
相关产品推荐

