Ts-Jest Typescript 诊断:错误 TS2307:找不到模块

Joh*_*now 5 typescript vue.js ts-jest

我在一个包含 js 和 ts 文件的 vue 项目中使用 ts-jest。该项目使用该@字符进行导入到目录的相对映射src/renderer/。TS 因找不到模块而发出警告。我可以忽略警告并通过执行以下操作来运行测试:

  globals: {
    'ts-jest': {
      /* Fails on mapped import syntax without this.*/
      diagnostics: {
        ignoreCodes: ['2307'],
      },
    },
  },
Run Code Online (Sandbox Code Playgroud)

但我希望导入按预期运行。

开玩笑的配置文件

module.exports = {
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'vue'],
  transform: {
    '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
    '.*\\.(vue)$': 'vue-jest',
    '.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
    '^.+\\.tsx?$': 'ts-jest',
  },
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/renderer/$1',
    '^vue$': 'vue/dist/vue.common.js',
  },
  roots: ['<rootDir>', '<rootDir>/src/renderer'],
  modulePaths: ['<rootDir>'],
  setupFiles: ['<rootDir>/vue-test-setup.ts'],
  snapshotSerializers: ['jest-serializer-vue'],
  testMatch: ['**/test/**/*.spec.(js|jsx|ts|tsx)|**/__test__/*.(js|jsx|ts|tsx)'],
  transformIgnorePatterns: ['<rootDir>/node_modules/?!(vue-timers)'],
  globals: {
    'ts-jest': {
      /* Fails on mapped import syntax without this.*/
      diagnostics: {
        warnOnly: true,
      },
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

测试在于 test/unit/regexes.spec.ts 导入在于src/renderer/resources/regexes.ts

我得到的具体错误是:

 FAIL  test/unit/specs/regexes.spec.ts
  ? Test suite failed to run

    TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
    test/unit/specs/regexes.spec.ts:1:19 - error TS2307: Cannot find module '@/resources/regexes'.

    1 import REGEX from '@/resources/regexes';
                        ~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)