Jest "Could not locate module" 如果任何依赖项在路径中有 "src"

Jest "Could not locate module" if any dependency has "src" in path

在我的 React 应用程序中,我正在导入一个模块,如下所示:

import { isValidAddress } from 'orbit-db';

isValidAddress 的某些依赖项需要 multicodec/src/base-table (see this line)。

然而,jest给出了以下错误:

Configuration error:

Could not locate module multicodec/src/base-table mapped as:
/Users/h/Documents/code/orbit-db-time-machine/src/base-table.

Please check your configuration for these entries:
{
  "moduleNameMapper": {
    "/src\/(.*)$/": "/Users/h/Documents/code/orbit-db-time-machine/src/"
  },
  "resolver": null
}

我认为这是因为开玩笑的依赖规则 "/src\/(.*)$/" 正在将所有带有 src 的路径重写为 <rootDir>/src,即使它们来自 npm 模块.

我试图通过将以下配置添加到我的package.json来解决这个问题:

"jest": {
  "moduleNameMapper": {
    "/multicodec\/(.*)$/": "<rootDir>/node_modules/multicodec/"
  }
}

然而,这并没有改变错误。我能够消除错误的唯一方法是删除我的 import 语句 - 但是,这在我的代码中是必需的。

注意:代码在 运行 来自我的 React 应用程序时有效,它仅在我 运行 开玩笑时中断。

我记得在我的 React 项目中使用 Jest 库时遇到过类似的问题。您可能还必须使用 transformIgnorePatters 来克服这个问题。

有一个问题线程,他们在 KY 存储库中讨论了这个问题,您可能也会发现它有帮助,尽管一些解决方案非常针对该项目:https://github.com/sindresorhus/ky/issues/170

这是一个错误并已修复:https://github.com/facebook/create-react-app/issues/7818