配置jest
、node.js
和typescript
后,脚本npx jest
在控制台中抛出错误
TypeError: Jest: a transform must export something.
at C:\projects\project-api\node_modules\@jest\transform\build\ScriptTransformer.js:386:19
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async Promise.all (index 0)
at async ScriptTransformer.loadTransformers (C:\projects\project-api\node_modules\@jest\transform\build\ScriptTransformer.js:378:5)
at async createScriptTransformer (C:\projects\project-api\node_modules\@jest\transform\build\ScriptTransformer.js:1105:3)
at async C:\projects\project-api\node_modules\@jest\core\build\TestScheduler.js:283:31
at async Promise.all (index 0)
at async TestScheduler.scheduleTests (C:\projects\project-api\node_modules\@jest\core\build\TestScheduler.js:276:5)
at async runJest (C:\projects\project-api\node_modules\@jest\core\build\runJest.js:387:19)
at async _run10000 (C:\projects\project-api\node_modules\@jest\core\build\cli\index.js:408:7)
jest.config.js
export default {
roots: [
'<rootDir>/src'
],
testMatch: [
'**/__tests__/**/*.+(ts)',
'**/?(*.)+(test).+(ts)'
],
transform: {
'^.+\\.(ts)$': 'ts-jest'
}
}
我在哪里没有正确配置它?
7条答案
按热度按时间6ljaweal1#
我试着用Node debugger(类似
node inspect test.js
的东西)调试Jest
,我找到了罪魁祸首。对我来说,它是jest-svg-transformer
包。显然,它与jest@27
不兼容。通常,如果
jest.config.js
的transform节中的某个项目损坏,则会出现此错误。n3h0vuf22#
在我的例子中,jest(主要版本26)和ts-jest(主要版本27)的版本不匹配,将ts-jest降级到主要版本26解决了我的问题。
jfewjypa3#
我遇到了这个错误,它最终成为我的
jest.config
(transform
)中的一个配置错误。我有一个应该在
moduleNameMapper
而不是transform
中的属性。一旦我更新了文件,jest就正确执行了。jest.config.js
:其中
styleMock.js
:c2e8gylq4#
我的错误是一个自定义转换器导出了一个
process
函数,但不是默认导出,所以我让它按照jest v27
文档工作:https://jestjs.io/docs/next/code-transformation#typescript-with-type-checkingercv8c1e5#
如果从jest@28升级到jest@29,则应更改转换器以返回对象
{code:"foo"}
,而不是直接返回字符串"foo"
参考:https://jestjs.io/docs/28.x/upgrading-to-jest28%23transformer
quhf5bfb6#
我和你有同样的问题。
对我来说,它最终是因为我有以下软件包的旧版本:
8zzbczxx7#
运行
yarn add ts-jest@next
为我解决了这个问题。