jest-haste-map:Haste 模块命名冲突(AWS、RN)

Cev*_*mas 2 amazon-web-services jestjs react-native expo aws-amplify

我有一个使用 AWS Amplify 的 React-native 项目。

在根目录下,有一个放大文件夹。

在这个放大文件夹里面,有一个backend文件夹,还有一个#current-cloud-backend文件夹。

这两个基本相同。

当我尝试开始我的项目时,npm run start我收到此错误:

  The following files share their name; please adjust your hasteImpl:
    * <rootDir>/amplify-backup/backend/function/cxLoyaltyMainAppVerifyAuthChallengeResponse/src/package.json
    * <rootDir>/amplify/#current-cloud-backend/function/cxLoyaltyMainAppVerifyAuthChallengeResponse/src/package.json
Run Code Online (Sandbox Code Playgroud)

并且抱怨在这两个文件夹中,每个 lambda 函数都有自己的package.json,其中它们的名称与对应的文件夹相同。

到目前为止我所做的

我发现很多人提到将modulePathIgnorePatterns: ['<rootDir>/build']我的根 package.json 放在jest. 有些人还说把它放在jest.config.js我找不到任何地方的里面。

我也试过创建一个根rn-cli.config.js并添加

module.exports = {
   resolver: {
       blacklistRE: blacklist( [
           /node_modules\/.*\/node_modules\/react-native\/.*/,
       ] )
   },
};
Run Code Online (Sandbox Code Playgroud)

这也不起作用。

我真的没有想法了,有人有任何想法吗?谢谢

小智 5

我正在使用 Expo CLI 并且遇到了同样的问题。

对我有用的解决方案: metro.config.js在根目录中。(而不是rn-cli.config.js

const blacklist = require('metro-config/src/defaults/blacklist');
module.exports = {
  resolver: {
    blacklistRE: blacklist([/#current-cloud-backend\/.*/]),
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
};
Run Code Online (Sandbox Code Playgroud)

  • 找不到模块“metro-config/src/defaults/blacklist” (2认同)