我正在尝试在我的 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 实例上失败,包含我上面尝试过的所有变体。
我可以做什么来调试这个?尽管尝试了上述最佳答案和建议,为什么这个问题仍然存在?
尝试清除笑话缓存
jest --clearCache
或
npm run test -- --clearCache
我遇到了同样的问题,但相反:它可以在我的 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
同样的情况也发生在我身上,根据上面相同的建议,降级到
[email protected]
修复了它。
我通过使用指向
node_modules
的符号链接在 Windows 上本地修复了此问题
mklink /D .\node_modules C:\NodeJs\node_modules