我只是尝试在一个nestjs应用上运行一些集成测试,但我得到了以下错误:SyntaxError: Cannot use import statement outside a module
我花了很多时间在这个问题上,这个问题应该很容易解决,但我不能处理它。这个问题发生在@nestjs/axios
lib上,它使用ESM而不是CommonJs。经过一些研究,我发现理论上我应该使用以下命令运行测试:yarn node --experimental-vm-modules $(yarn bin jest)
但是我做的任何事情都不起作用,我也不明白为什么这个文件会被匹配,因为它在node_modules中,有人能帮助我吗?
我的Jest配置:
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "",
"preset": "ts-jest",
"testRegex": ".spec.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"coverageDirectory": "./coverage",
"testEnvironment": "node",
"globalSetup": "<rootDir>/tests/jest.setup.ts",
"globalTeardown": "<rootDir>/tests/jest.teardown.ts"
}
我的版本:
"@nestjs/axios": "^1.0.1",
"@types/jest": "^24.0.18",
"jest": "^26.0.0",
"ts-jest": "^26.5.5",
"typescript": "^4.2.3"
我已经尝试过将node_modules(这已经是jest的默认行为)放在transformIgnorePatterns
设置中,但它不起作用。
我遇到这个错误的库是一个内部库(node_modules/@bank/auth/node_modules/@nestjs/axios/node_modules/axios/index.js:1),这可能是问题的原因吗?
1条答案
按热度按时间watbbzwu1#
这与jest和ts-jest将库视为ESM模块有关,这是由于package.json是如何设置的。您应该能够将其添加到您的jest配置中,并且没有任何问题。
这将强制
jest
从node_modules
正确解析库