Sonali
Sonali

Reputation: 37

ERROR: Jest: a transform must export a `process` function. STACK: TypeError: Jest: a transform must export a `process` function In VUE Project

ERROR: Jest: a transform must export a process function. STACK: TypeError: Jest: a transform must export a process function In VUE Project

I am trying to run Unit-test my test is passing but it's failing while collecting coverages. I have added jest-config file and all unit-test related packages. Please help, Did i missed any package here??

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",
    "postcss-prefix-selector": "^1.7.2",
    "postcss-preset-env": "^6.7.0",
    "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-config file

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"]
};

Upvotes: 1

Views: 3669

Answers (1)

According to this discussion, you need jest and ts-jest to be the same versions.

Upvotes: 1

Related Questions