TypeError: Jest: 一个转换必须导出一些东西

Rom*_*kyi 18 jestjs ts-jest

配置完成后jestnode.jstypescript脚本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)
Run Code Online (Sandbox Code Playgroud)

开玩笑的配置文件

export default {
  roots: [
    '<rootDir>/src'
  ],
  testMatch: [
    '**/__tests__/**/*.+(ts)',
    '**/?(*.)+(test).+(ts)'
  ],
  transform: {
    '^.+\\.(ts)$': 'ts-jest'
  }
}
Run Code Online (Sandbox Code Playgroud)

我在哪里没有正确配置它?

koa*_*aok 20

我有你同样的问题。

对我来说,最终是因为我使用的是以下软件包的旧版本:

  • ts-loader
  • 笑话
  • ts节点

  • 这个答案的排列略有不同,我没有安装“ts-loader”,用“yarn add --dev ts-loader”安装它解决了这个问题 (3认同)

小智 6

跑步yarn add ts-jest@next为我解决了它。

  • 这个答案取决于“下一个”,它会随着时间的推移而改变。您安装了哪个版本的 ts-jest? (3认同)

小智 6

我尝试Jest通过 Node 调试器(类似node inspect test.js)进行调试,我找到了罪魁祸首。对我来说是jest-svg-transformer包。显然,它与jest@27.

通常,如果转换部分中的某些项目jest.config.js损坏,则会引发此错误。


Men*_*ris 6

jest.config我遇到了这个错误,最终导致我的( )中的配置错误transform

我有一处财产本应在里面moduleNameMapper,但不是transform。一旦我更新了文件,jest 就正确执行了。

jest.config.js

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'jsdom',
  testPathIgnorePatterns: ['/node_modules/', '/dist'],
  collectCoverage: true,
  verbose: true,
  transform: {
    '^.+\\.(js|jsx|ts|tsx)$': '<rootDir>/node_modules/babel-jest',
  },
  moduleNameMapper: {
    '\\.(css|scss|less)$': '<rootDir>/test/styleMock.js',
  },
};
Run Code Online (Sandbox Code Playgroud)

在哪里styleMock.js

module.exports = {};
Run Code Online (Sandbox Code Playgroud)


hun*_*r92 6

就我而言,我的 jest(主要版本 26)和 ts-jest(主要版本 27)版本不匹配。将 ts-jest 降级到主要版本 26 解决了我的问题。