错误:开玩笑:转换必须导出一个“进程”函数堆栈:类型错误:Jest:转换必须在 VUE 项目中导出“流程”函数

问题描述

错误:开玩笑:转换必须导出 process 函数。堆栈:TypeError:Jest:转换必须在 VUE 项目中导出 process 函数

我正在尝试运行单元测试,我的测试通过了,但在收集覆盖率时失败了。我添加了 jest-config 文件和所有与单元测试相关的包。请帮忙,我错过了这里的任何包裹吗?

enter image description here

Package.json

{
  "name": "@ava-t2/questionnaire-ui","version": "1.0.0","private": false,"scripts": {
    "serve": "vue-cli-service serve","build": "vue-cli-service build","test:unit": "vue-cli-service test:unit","test:ci": "npm run test:unit --reporters=default --reporters=jest-junit","test:e2e": "vue-cli-service test:e2e","build:lib": "vue-cli-service build --target lib --name questionnaire-ui src/plugin.ts --mode production","pretty-quick": "pretty-quick","serve:standalone": "vue-cli-service serve --mode standalone"
  },"main": "dist/questionnaire-ui.umd.js","browser": "dist/questionnaire-ui.common.js","unpkg": "dist/questionnaire-ui.umd.min.js","dependencies": {
    "@ava-ui/tailwind-plugin": "^1.1.3","@azure/abort-controller": "^1.0.1","@azure/storage-blob": "^12.2.0-preview.1","@babel/core": "^7.12.10","@popperjs/core": "^2.5.4","@types/jest": "^24.9.1","@types/jspdf": "^1.3.3","@vue/cli-plugin-unit-jest": "^4.5.13","apisauce": "^2.0.1","autoprefixer": "^9.8.6","axios": "^0.21.1","axios-retry": "^3.1.9","babel-core": "^7.0.0-bridge.0","babel-jest": "^27.0.6","bootstrap": "^4.4.1","bootstrap-vue": "^2.5.0","core-js": "^3.6.4","file-saver": "^2.0.5","html2pdf.js": "^0.9.2","jest-junit": "^12.2.0","jspdf": "^2.3.1","lodash": "^4.17.21","marked": "^2.0.1","node-sass": "^5.0.0","postcss": "^7.0.35","postcss-prefix-selector": "^1.7.2","postcss-preset-env": "^6.7.0","sass-loader": "^10.1.0","single-spa-vue": "^2.1.0","ts-jest": "^26.5.0","v-click-outside": "^3.1.2","vee-validate": "^3.4.5","vue": "^2.6.11","vue-class-component": "^7.2.3","vue-html-secure": "^1.0.9","vue-loader": "^15.9.6","vue-property-decorator": "^8.4.1","vue-svg-loader": "^0.16.0","vuex": "^3.1.3","vuex-class": "^0.3.2"
  },"devDependencies": {
    "@types/lodash": "^4.14.168","@types/marked": "^1.2.1","@vue/cli-plugin-babel": "^4.5.0","@vue/cli-plugin-router": "~4.3.0","@vue/cli-plugin-typescript": "^4.5.0","@vue/cli-plugin-vuex": "~4.3.0","@vue/cli-service": "^4.5.0","@vue/test-utils": "^1.0.3","husky": "^4.2.5","prettier": "^1.19.1","pretty-quick": "^2.0.1","single-spa": "^5.8.2","svg-url-loader": "^6.0.0","systemjs-webpack-interop": "^2.3.3","tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.0.2","tslint": "^6.1.2","typescript": "^3.9.3","vue": "^2.6.12","vue-cli-plugin-single-spa": "^2.1.0","vue-router": "^3.4.9","vue-template-compiler": "^2.6.12"
  },"browserslist": [
    "> 1%","last 2 versions","not dead"
  ],"husky": {
    "hooks": {
      "pre-commit": "pretty-quick --staged tslint . --fix"
    }
  },"jest-junit": {
    "suiteNameTemplate": "{filepath}","outputDirectory": ".","outputName": "junit.xml"
  }
}

Jest 配置文件

module.exports = {
  preset: "@vue/cli-plugin-unit-jest/presets/typescript-and-babel",modulefileExtensions: ["js","ts","json","vue"],modulePaths: ["./src"],transform: {
    ".*\\.(vue)$": "vue-jest","^.+\\.tsx?$": "@vue/cli-plugin-unit-jest/node_modules/ts-jest","^.+\\.svg$": "<rootDir>/src/svgTransform.js","^.+\\.js$": "<rootDir>/node_modules/babel-jest"
  },collectCoverage: true,collectCoverageFrom: [
    "**/*.{ts,vue}","**/*.{js,jsx}","!**/node_modules/**","!**/coverage/**","!**/index.js"
  ],coverageReporters: ["text","cobertura"],reporters: ["default","jest-junit"]
};

解决方法

根据这个discussion,你需要 jest 和 ts-jest 是相同的版本。