我设置了一个新的放大、添加了身份验证和确认后 lambda 函数,以将用户数据移至 DynamoDB。当我运行 NPM start 时,出现此错误:
无法构造变压器:DuplicateError:重复的文件或模拟。请检查控制台以获取更多信息 在 setModule (\MyDemo ode_modules\jest-haste-map uild\index.js:543:17) .js:426:22 {
mockPath1:'amplify#current-cloud-backend unction\FreshAuthPostConfirmation\src\package.json',
mockPath2: '放大确认功能 \FreshAuthPostConfirmation\src\package.json' } '''
根据我所读到的内容,#current-cloud-backend 是由 amplify 根据后端文件夹中的文件创建的。看起来 package.json 应该在那里,但我不确定为什么它是一个错误。我在某处看到我应该删除子类重复文件,我认为它是 #current-cloud-backend 中的文件,但是每次我推送它时 amplify 都会继续产生此错误,我如何避免这种情况到底发生了什么?
在这个Amplify GitHub Issue中有关于此错误的讨论。文件
package.json
在 jest-haste-map 中出现两次,解决方案是在构建和启动应用程序时显式忽略 #current-cloud-backend
文件夹。
问题的解决方案取决于您的 React Native 版本:在这里您可以找到有关不同版本的文件排除如何工作的概述。例如,您可以创建一个包含以下内容的
metro.config.js
文件来排除 #current-cloud-backend
:
const exclusionList = require('metro-config/src/defaults/exclusionList');
module.exports = {
resolver: {
blacklistRE: exclusionList([/#current-cloud-backend\/.*/])
}
};
并安装
metro-config
作为开发依赖项。如果这不起作用,您可以尝试链接中的一些其他解决方案。
我遇到了同样的问题。我正在使用 Expo SDK 48 和 Amplify 以及 lambda 函数 要将 Metro.config.js 文件添加到 expo 项目中,请按照以下步骤操作:https://docs.expo.dev/guides/customizing-metro/
npx expo customize metro.config.js
const { getDefaultConfig } = require('expo/metro-config');
const exclusionList = require('metro-config/src/defaults/exclusionList');
const config = getDefaultConfig(__dirname);
config.resolver.blacklistRE = exclusionList([/amplify\/#current-cloud-backend\/.*/]);
module.exports = config;
不需要安装任何额外的npm包(我看到一些答案要求你安装metro-confic dev依赖项,根据我的实验,这是不需要的,它甚至带来了EAS构建失败......)
然后我尝试了
npx expo start
和eas build -p ios
,都成功了。