在使用Jest时,我常常只使用JavaScript来解决类似的错误,但是目前我无法用类型记录来解决这些错误。
在我安装@types/jest-environment-puppeteer
、@types/puppeteer
和@types/expect-puppeteer
之前,我所有的测试都运行良好。
在安装它们之后,傀儡机测试运行良好,但其他测试开始失败,错误如下。
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)
我做了什么?
allowJs: true
在tsconfig.json
上,transformIgnorePatterns
在开玩笑上吐露。因此,jest可以在此错误停止后从node_modules/
编译文件,但由于另一个奇怪的原因,测试失败了。更糟糕的是,测试开始时间增加太多了。
因此,我离开了allowJs
,就像在最初的安装中一样,并从
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
}
至
"transform": {
"^.+\\.(t)s$": "ts-jest"
}
因此,目前ts-jest不编译js文件。但我认为我无法让babel为js
文件选择转换。这些都是我开玩笑的吐露:
{
"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)$"]
}
发布于 2022-08-02 07:47:44
感谢您的回复:https://stackoverflow.com/a/54117206/15741905
我开始在googling上搜索类似的修补程序,最后在这里结束:https://github.com/uuidjs/uuid/issues/451
这解决了我的问题:https://github.com/uuidjs/uuid/issues/451#issuecomment-1112328417
// jest.config.js
{
//................
moduleNameMapper: {
// Force module uuid to resolve with the CJS entry point, because Jest does not support package.json.exports. See https://github.com/uuidjs/uuid/issues/451
"uuid": require.resolve('uuid'),
}
}
如果能用玩笑解决这个问题,我还是会很高兴的。
因为我不得不把开玩笑的吐露从package.json
带到一个独立的.js
文件。
编辑:根据这个github问题兼容性问题,uuid
库的最新版本已经解决了这个问题。
发布于 2022-09-06 18:26:52
简单地将moduleNameMapper:{"^uuid$": "uuid"}
添加到我的jest.config.js中就可以解决这个问题:
瞬态依赖项uuid:^8.3.2
jest:28.1.3
角:14.0.1
https://stackoverflow.com/questions/73203367
复制相似问题