问题描述
错误:开玩笑:转换必须导出 process
函数。堆栈:TypeError:Jest:转换必须在 VUE 项目中导出 process
函数
我正在尝试运行单元测试,我的测试通过了,但在收集覆盖率时失败了。我添加了 jest-config 文件和所有与单元测试相关的包。请帮忙,我错过了这里的任何包裹吗?
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 是相同的版本。