Jest - 找不到模块'.../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/interopRequireDefault'

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

我正在尝试在我的 CI/CD 机器上运行我的项目测试。它们是开玩笑的测试,在我的所有环境中已经运行良好一段时间了。我正在经历软件包更新,在这个过程中,我开始遇到问题。我看到每个测试都失败了,因为如果出现此错误:

 ● Test suite failed to run

    Cannot find module '/cicduser/myproject/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/interopRequireDefault' from 'src/setupTests.ts'

      1 | /*
      2 |  * Filename:       setupTests.ts
    > 3 |  * Classification: UNCLASSIFIED
        |                              ^

      at Resolver.resolveModule (node_modules/jest-runtime/node_modules/jest-resolve/build/index.js:306:11)
      at Object.<anonymous> (src/setupTests.ts:3:30)

这发生在 Debian Ubuntu-16 Linux 实例上,节点为 14.16.3,npm 8.1.0。

不会发生在我的本地机器上。我的本地机器可以很好地运行这些测试。我本地的是mac Catalina 10.15.7,我尝试过node 14和16的版本,以及npm 7和8,没有问题。我确实阅读了无法解析模块

@babel/runtime/helpers/interopRequireDefault
,以及许多其他相关问题,但没有解决方案有帮助。我试过了

  • npm install @babel/runtime
  • npm install babel-preset-react-app
  • "nohoist": ["**/babel-preset-react-app/@babel/runtime"]
    添加到 package.json
  • 多次卸载并重新安装所有软件包,并进行各种变体

有点令人困惑的是,测试在我的笔记本电脑上运行良好,包含我上面尝试过的所有变体,但在我的 CI/CD 实例上失败,包含我上面尝试过的所有变体。

我可以做什么来调试这个?尽管尝试了上述最佳答案和建议,为什么这个问题仍然存在?

node.js npm jestjs babeljs
4个回答
19
投票

尝试清除笑话缓存

jest --clearCache

npm run test -- --clearCache

0
投票

我遇到了同样的问题,但相反:它可以在我的 Azure 管道上运行,但在本地失败。运行此命令后,我的所有测试都在两个环境中成功运行:

npm i [email protected] 

基于此问题:https://github.com/facebook/create-react-app/issues/6398#issuecomment-462475835

发布该消息的用户(jeremyckahn)这样说:

我能够通过以下方式解决这个问题:

npm i [email protected]

撰写本文时的最新版本是 7.0.1。似乎与 #6393 相关的某些内容导致了此问题。

相关提交:

b02f181#diff-5a51074922f8107dc611b7e125130e7e

b7e0158#diff-5a51074922f8107dc611b7e125130e7e


0
投票

同样的情况也发生在我身上,根据上面相同的建议,降级到

[email protected]
修复了它。


0
投票

我通过使用指向

node_modules

的符号链接在 Windows 上本地修复了此问题
mklink /D .\node_modules C:\NodeJs\node_modules
© www.soinside.com 2019 - 2024. All rights reserved.