Jest+vue: "找不到模块....vue"

edd*_*dow 7 vue.js jestjs

我真的只是想为我的图书馆建立一个 jest+vue 的框架,并迅速得到这个错误。我知道这个结构不是通常的笑话结构,我在这里尝试用一个辅助控件来描述一个测试。

这是我的test文件夹的内容:arrays.specs.tsarrays.vue

这是配置:

module.exports = {
  moduleFileExtensions: [
    "js",
    "ts",
    "vue"
  ],
  roots: [
    "<rootDir>/test"
  ],
  testEnvironment: "jest-environment-jsdom",
  testMatch: [
    "**/?(*.)+(spec|test).[tj]s?(x)"
  ],
  transform: {
    ".*\\.(vue)$": "vue-jest",
    ".*\\.(ts)$": "ts-jest"
  },
};
Run Code Online (Sandbox Code Playgroud)

我已经安装了这 3 个软件包:@vue/test-utils,ts-jestvue-jest

现在,有了这个,我在运行 jest 时仍然会遇到这个错误:

    test/arrays.spec.ts:4:20 - error TS2307: Cannot find module './arrays.vue'.

    import Arrays from './arrays.vue'
Run Code Online (Sandbox Code Playgroud)

我真的不明白我错过了什么。

Ben*_*per 8

您可能缺少“垫片”文件。将其放入您的“src”目录中:

shims-vue.d.ts

declare module '*.vue' {
  import Vue from 'vue';
  export default Vue;
}
Run Code Online (Sandbox Code Playgroud)

  • 它适用于普通文件,但对于 .spec.ts 文件则不起作用 (4认同)

小智 2

如果在 vue jest 测试中出现Cannot find module 问题,请按如下方式设置jest.config.js文件的预设属性。

module.exports = {
  preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel',
  testEnvironment: 'node'
}
Run Code Online (Sandbox Code Playgroud)