You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt 2 TypeScript项目Jest测试报TS2307模块找不到错误

问题:Nuxt 2 TypeScript项目Jest测试TS文件报TS2307模块找不到错误

Nuxt 2 + TypeScript项目运行正常,但测试环节存在问题:所有.ts后缀的测试文件执行时均报错TS2307: Cannot find module,无法找到测试中导入的组件;仅.js后缀的测试文件能正常识别导入的组件并运行。

package.json配置

{
  "name": "my-nuxt-2-project",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "dev": "nuxt",
    "build": "nuxt build",
    "start": "nuxt start",
    "generate": "nuxt generate",
    "test": "jest",
    "clearJestCache": "jest --clearCache"
  },
  "dependencies": {
    "axios": "0.19.2",
    "core-js": "^3.25.3",
    "nuxt": "^2.15.8",
    "nuxt-buefy": "^0.4.24",
    "vue": "^2.7.10",
    "vue-server-renderer": "^2.7.10",
    "vue-template-compiler": "^2.7.10"
  },
  "devDependencies": {
    "@nuxt/types": "^2.15.8",
    "@nuxt/typescript-build": "^2.1.0",
    "@types/jest": "29.5.12",
    "@vue/test-utils": "^1.3.0",
    "babel-core": "7.0.0-bridge.0",
    "babel-jest": "^29.1.2",
    "jest": "^29.1.2",
    "jest-environment-jsdom": "^29.1.2",
    "ts-jest": "^29.0.3",
    "vue-jest": "^3.0.4"
  }
}

tsconfig.json配置

{
  "compilerOptions": {
    "target": "ES2018",
    "module": "ESNext",
    "moduleResolution": "Node",
    "lib": [
      "ESNext",
      "ESNext.AsyncIterable",
      "DOM"
    ],
    "esModuleInterop": true,
    "allowJs": true,
    "sourceMap": true,
    "strict": true,
    "noEmit": true,
    "experimentalDecorators": true,
    "baseUrl": ".",
    "paths": {
      "~/*": [
        "./*"
      ],
      "@/*": [
        "./*"
      ]
    },
    "types": [
      "@nuxt/types",
      "@types/node",
      "jest"
    ]
  },
  "include": [
    "**/*.ts",
    "**/*.vue",
    "test/NuxtLogo.spec.js"
  ],
  "exclude": [
    "node_modules",
    ".nuxt",
    "dist"
  ]
}

jest.config.js配置

module.exports = {
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/$1',
    '^~/(.*)$': '<rootDir>/$1',
    '^vue$': 'vue/dist/vue.common.js'
  },
  moduleFileExtensions: [
    'ts',
    'js',
    'vue',
    'json'
  ],
  transform: {
    '^.+\\.ts$': 'ts-jest',
    '^.+\\.js$': 'babel-jest',
    '.*\\.(vue)$': 'vue-jest'
  },
  collectCoverage: true,
  collectCoverageFrom: [
    '<rootDir>/components/**/*.vue',
    '<rootDir>/pages/**/*.vue'
  ],
  testEnvironment: 'jsdom',
  transformIgnorePatterns: [
    "/node_modules/(?!axios)"
  ]
}

额外说明

  • Jest不仅无法识别@/pages/personal-info/_id.vue、~/pages/inspire.vue这类别名路径的模块,连./../pages/about-me.vue这类相对路径的模块也找不到。

内容的提问来源于stack exchange,提问作者Heinz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:48:24