AWS Amplify 重复错误:重复的文件或模拟

问题描述 投票:0回答:2

我设置了一个新的放大、添加了身份验证和确认后 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 都会继续产生此错误,我如何避免这种情况到底发生了什么?

amazon-web-services react-native aws-lambda amazon-dynamodb aws-amplify
2个回答
18
投票

在这个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
作为开发依赖项。如果这不起作用,您可以尝试链接中的一些其他解决方案。


3
投票

我遇到了同样的问题。我正在使用 Expo SDK 48 和 Amplify 以及 lambda 函数 要将 Metro.config.js 文件添加到 expo 项目中,请按照以下步骤操作:https://docs.expo.dev/guides/customizing-metro/

  1. 在项目终端中运行
    npx expo customize metro.config.js
  2. 在生成的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
,都成功了。

© www.soinside.com 2019 - 2024. All rights reserved.