开玩笑升级到 Angular 13 后找不到 root

分享于2022年07月17日 angular jestjs ts-jest 问答
【问题标题】:开玩笑升级到 Angular 13 后找不到 root(Jest not finding root after upgrading to Angular 13)
【发布时间】:2022-01-25 07:22:54
【问题描述】:

我将我的项目升级到 Angular 13 并且开玩笑也需要一些更改。

现在无法解析对“src”的任何引用。

例如:

Cannot find module 'src/app/app.component/app.component.test' from 'src/dashboard/reports/modules/tables/matrix-table/matrix-table.test.ts'

这是我的 jest.config.js

const { compilerOptions } = require('./tsconfig.test.json');
const { pathsToModuleNameMapper } = require('ts-jest/utils');

module.exports = {
  preset: "jest-preset-angular",
  testMatch: ["**/*.test.ts"],
  coverageReporters: ["json", "lcov", "text", "clover", "cobertura"],
  moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '/' }),
  globals: {
    "ts-jest": {
      tsconfig: "tsconfig.test.json"
    }
  }
};

我应该在我的 jest 配置中进行哪些更改才能将根解析为 src?


【解决方案1】:

该错误似乎暗示 Typescript 和 Jest builder 没有将测试转换为 ESM,这是 Angular v13 升级的最新变化。来自 ts-jest ESM support doc

// jest.config.js
module.exports = {
  // [...]
  extensionsToTreatAsEsm: ['.ts'],
  globals: {
    'ts-jest': {
      useESM: true,
    },
  },
  moduleNameMapper: {
    '^(\\.{1,2}/.*)\\.js$': '$1',
  },
}