我曾经在使用Jest时只使用JavaScript来解决类似的错误,但目前我无法使用Typescript来解决。
我所有的测试都运行良好,直到我安装了Puppeteer,它需要@types/jest-environment-puppeteer
,@types/puppeteer
和@types/expect-puppeteer
。
安装后, puppet 师测试运行完美,但其他测试开始失败,并出现以下错误。
D:\...\api\node_modules\uuid\dist\esm-browser\index.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){export { default as v1 } from './v1.js';
^^^^^^
SyntaxError: Unexpected token 'export'
at Runtime.createScriptFromCode (../node_modules/jest-runtime/build/index.js:1796:14)
at Object.require (../node_modules/@nestjs/common/decorators/core/injectable.decorator.js:4:16)
"我做了什么"
在tsconfig.json
上设置allowJs: true
并在jest配置上设置transformIgnorePatterns
。这样jest就可以从node_modules/
编译文件了。之后,这个错误停止了,但测试失败了,原因是另一个奇怪的原因。更糟糕的是测试开始时间增加了太多。
因此,我保留了原始设置中的allowJs
,并从
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
}
至
"transform": {
"^.+\\.(t)s$": "ts-jest"
}
所以目前ts-jest不能编译js文件。但是我想我不能让babel选择js
文件的转换。下面是我的jest配置:
{
"moduleFileExtensions": ["js", "json", "ts"],
"rootDir": ".",
"testEnvironment": "node",
"testRegex": ".e2e-spec.ts$",
"transform": {
"^.+\\.(t)s$": "ts-jest",
"^.+\\.(js|jsx)$": "babel-jest"
},
"transformIgnorePatterns": ["<rootDir>/node_modules/.+.(js|jsx)$"]
}
2条答案
按热度按时间fv2wmkja1#
感谢此回复:https://stackoverflow.com/a/54117206/15741905
我开始在谷歌上搜索类似的修复程序,结果是:https://github.com/uuidjs/uuid/issues/451
这解决了我的问题:https://github.com/uuidjs/uuid/issues/451#issuecomment-1112328417
虽然很坚韧,但我仍然很高兴,如果有解决方案,这通过使用jest-babel。
因为我必须将jest配置从
package.json
转移到一个单独的.js
文件中。编辑:根据这个github问题,
uuid
库的最新版本已经解决了兼容性问题。gj3fmq9x2#
只需将
moduleNameMapper:{"^uuid$": "uuid"}
添加到我的jest.config.js中就可以解决这个问题:暂时相关性uuid:^8.3.2中的值
第28.1.3节
棱角分明:14.0.1