kulshekhar / ts-jest

A Jest transformer with source map support that lets you use Jest to test projects written in TypeScript.
https://kulshekhar.github.io/ts-jest
MIT License
6.92k stars 452 forks source link

import "regenerator-runtime/runtime"; SyntaxError: Unexpected string #922

Closed serratedserenade closed 5 years ago

serratedserenade commented 5 years ago

Issue :

Getting an unexpected string error as shown:

 FAIL  tests/unit/components/client-management/EditClient.spec.ts
  ● Test suite failed to run
    /home/adcruz/Documents/project/admin-portal/src/components/client-management/EditClient.vue:2
    import "regenerator-runtime/runtime";
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    SyntaxError: Unexpected string
      1 | import { shallowMount, Wrapper } from '@vue/test-utils';
      2 | import Vue from 'vue';
    > 3 | import EditClient from '@/components/client-management/EditClient.vue';
        | ^
      4 | import Vuetify from 'vuetify';
      5 |
      6 | describe('EditClient.vue Rendering', () => {
      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
      at Object.<anonymous> (tests/unit/components/client-management/EditClient.spec.ts:3:1)

## Expected behavior <!-- describe the expected behavior below -->:
Test to succeed

## Debug log:
<details/>
<summary>log file content<!-- You can activate the debug logger by setting the environment variable TS_JEST_LOG="ts-jest.log" before running tests. The output of the logger will be in **ts-jest.log** in CWD, paste it in the below section: --></summary>

Package.json
```json
"dependencies": {
    "axios": "^0.18.0",
    "luxon": "^1.6.2",
    "vue": "^2.5.17",
    "vue-class-component": "^6.0.0",
    "vue-property-decorator": "^7.0.0",
    "vue-router": "^3.0.1",
    "vuetify": "^1.3.0",
    "vuex": "^3.0.1"
  },
  "devDependencies": {
    "@commitlint/cli": "^7.2.1",
    "@commitlint/config-conventional": "^7.1.2",
    "@project/ts": "^0.5.0",
    "@types/jest": "^23.1.4",
    "@types/luxon": "^1.4.1",
    "@vue/cli-plugin-babel": "^3.0.0",
    "@vue/cli-plugin-typescript": "^3.0.0",
    "@vue/cli-plugin-unit-jest": "^3.0.0",
    "@vue/cli-service": "^3.0.0",
    "@vue/test-utils": "^1.0.0-beta.20",
    "babel-core": "7.0.0-bridge.0",
    "enquirer": "^2.0.6",
    "husky": "^1.1.4",
    "stylus": "^0.54.5",
    "stylus-loader": "^3.0.1",
    "ts-jest": "^23.0.0",
    "typescript": "^3.0.0",
    "vue-cli-plugin-styleguidist": "^0.1.9",
    "vue-cli-plugin-vuetify": "^0.4.5",
    "vue-template-compiler": "^2.5.17",
    "vuetify-loader": "^1.0.5"
  },
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","version":"23.10.4"},"message":"creating Importer singleton","sequence":1,"time":"2018-12-21T03:17:37.017Z"}
{"context":{"allowJs":false,"logLevel":20,"namespace":"jest-preset","package":"ts-jest","version":"23.10.4"},"message":"creating jest presets not handling JavaScript files","sequence":2,"time":"2018-12-21T03:17:37.021Z"}
{"context":{"actualVersion":"23.6.0","expectedVersion":">=22 <24","logLevel":20,"namespace":"versions","package":"ts-jest","version":"23.10.4"},"message":"checking version of jest: OK","sequence":3,"time":"2018-12-21T03:17:37.024Z"}
{"context":{"baseOptions":{},"logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformerId":1,"version":"23.10.4"},"message":"created new transformer","sequence":4,"time":"2018-12-21T03:17:37.025Z"}
{"context":{"fileName":"/home/adcruz/Documents/project/admin-portal/tests/unit/components/client-management/EditClient.spec.ts","logLevel":20,"namespace":"jest-transformer","package":"ts-jest","transformOptions":{"instrument":false,"rootDir":"/home/adcruz/Documents/project/admin-portal"},"transformerId":1,"version":"23.10.4"},"message":"computing cache key for /home/adcruz/Documents/project/admin-portal/tests/unit/components/client-management/EditClient.spec.ts","sequence":5,"time":"2018-12-21T03:17:37.026Z"}
{"context":{"logLevel":30,"namespace":"jest-transformer","package":"ts-jest","transformerId":1,"version":"23.10.4"},"message":"no matching config-set found, creating a new one","sequence":6,"time":"2018-12-21T03:17:37.026Z"}
{"context":{"config":{"automock":false,"browser":false,"cache":true,"cacheDirectory":"/tmp/jest_rs","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/home/adcruz/Documents/project/admin-portal","detectLeaks":false,"detectOpenHandles":false,"errorOnDeprecated":false,"filter":null,"forceCoverageMatch":[],"globals":{},"haste":{"providesModuleNodeModules":[]},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","jsx","json","vue","ts","tsx"],"moduleNameMapper":[["^@/(.*)$","/home/adcruz/Documents/project/admin-portal/src/$1"]],"modulePathIgnorePatterns":[],"name":"bc9c7cc210cf72e3430b1ec720541bbd","prettierPath":"/home/adcruz/Documents/project/admin-portal/node_modules/prettier/index.js","resetMocks":false,"resetModules":false,"resolver":null,"restoreMocks":false,"rootDir":"/home/adcruz/Documents/project/admin-portal","roots":["/home/adcruz/Documents/project/admin-portal"],"runner":"jest-runner","setupFiles":[],"setupTestFrameworkScriptFile":null,"skipFilter":false,"snapshotSerializers":["/home/adcruz/Documents/project/admin-portal/node_modules/jest-serializer-vue/index.js"],"testEnvironment":"jest-environment-jsdom","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":"","testRunner":"/home/adcruz/Documents/project/admin-portal/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost/","timers":"real","transform":[["^.+\\.vue$","/home/adcruz/Documents/project/admin-portal/node_modules/vue-jest/vue-jest.js"],[".+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$","/home/adcruz/Documents/project/admin-portal/node_modules/jest-transform-stub/index.js"],["^.+\\.tsx?$","/home/adcruz/Documents/project/admin-portal/node_modules/ts-jest/dist/index.js"]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"backports","package":"ts-jest","transformerId":1,"version":"23.10.4"},"message":"backporting config","sequence":7,"time":"2018-12-21T03:17:37.026Z"}
{"context":{"jestConfig":{"automock":false,"browser":false,"cache":true,"cacheDirectory":"/tmp/jest_rs","clearMocks":false,"coveragePathIgnorePatterns":["/node_modules/"],"cwd":"/home/adcruz/Documents/project/admin-portal","detectLeaks":false,"detectOpenHandles":false,"errorOnDeprecated":false,"filter":null,"forceCoverageMatch":[],"globals":{"ts-jest":{}},"haste":{"providesModuleNodeModules":[]},"moduleDirectories":["node_modules"],"moduleFileExtensions":["js","jsx","json","vue","ts","tsx"],"moduleNameMapper":[["^@/(.*)$","/home/adcruz/Documents/project/admin-portal/src/$1"]],"modulePathIgnorePatterns":[],"name":"bc9c7cc210cf72e3430b1ec720541bbd","prettierPath":"/home/adcruz/Documents/project/admin-portal/node_modules/prettier/index.js","resetMocks":false,"resetModules":false,"resolver":null,"restoreMocks":false,"rootDir":"/home/adcruz/Documents/project/admin-portal","roots":["/home/adcruz/Documents/project/admin-portal"],"runner":"jest-runner","setupFiles":[],"setupTestFrameworkScriptFile":null,"skipFilter":false,"snapshotSerializers":["/home/adcruz/Documents/project/admin-portal/node_modules/jest-serializer-vue/index.js"],"testEnvironment":"jest-environment-jsdom","testEnvironmentOptions":{},"testLocationInResults":false,"testMatch":["**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"],"testPathIgnorePatterns":["/node_modules/"],"testRegex":"","testRunner":"/home/adcruz/Documents/project/admin-portal/node_modules/jest-jasmine2/build/index.js","testURL":"http://localhost/","timers":"real","transform":[["^.+\\.vue$","/home/adcruz/Documents/project/admin-portal/node_modules/vue-jest/vue-jest.js"],[".+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$","/home/adcruz/Documents/project/admin-portal/node_modules/jest-transform-stub/index.js"],["^.+\\.tsx?$","/home/adcruz/Documents/project/admin-portal/node_modules/ts-jest/dist/index.js"]],"transformIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":[]},"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"version":"23.10.4"},"message":"normalized jest config","sequence":8,"time":"2018-12-21T03:17:37.027Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsJestConfig":{"compiler":"typescript","diagnostics":{"ignoreCodes":[6059,18002,18003],"pretty":true,"throws":true},"isolatedModules":false,"transformers":[],"tsConfig":{"kind":"file"}},"version":"23.10.4"},"message":"normalized ts-jest config","sequence":9,"time":"2018-12-21T03:17:37.027Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"version":"23.10.4"},"message":"babel is disabled","sequence":10,"time":"2018-12-21T03:17:37.033Z"}
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","requireResult":{"exists":true,"given":"typescript","path":"/home/adcruz/Documents/project/admin-portal/node_modules/typescript/lib/typescript.js"},"version":"23.10.4"},"message":"loaded module typescript","sequence":11,"time":"2018-12-21T03:17:37.255Z"}
{"context":{"logLevel":20,"namespace":"Importer","package":"ts-jest","version":"23.10.4"},"message":"patching typescript","sequence":12,"time":"2018-12-21T03:17:37.256Z"}
{"context":{"actualVersion":"3.1.6","expectedVersion":">=2.7 <4","logLevel":20,"namespace":"versions","package":"ts-jest","version":"23.10.4"},"message":"checking version of typescript: OK","sequence":13,"time":"2018-12-21T03:17:37.256Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsConfigFileName":"/home/adcruz/Documents/project/admin-portal/tsconfig.json","version":"23.10.4"},"message":"readTsConfig(): reading /home/adcruz/Documents/project/admin-portal/tsconfig.json","sequence":14,"time":"2018-12-21T03:17:37.257Z"}
{"context":{"logLevel":20,"namespace":"config","package":"ts-jest","transformerId":1,"tsconfig":{"input":{"compilerOptions":{"allowSyntheticDefaultImports":true,"baseUrl":"./","esModuleInterop":true,"experimentalDecorators":false,"importHelpers":true,"jsx":"preserve","lib":["esnext","dom","dom.iterable","scripthost"],"module":"esnext","moduleResolution":"node","noImplicitAny":false,"noImplicitThis":true,"noUnusedLocals":false,"paths":{"@/*":["src/*"]},"sourceMap":true,"strict":true,"target":"esnext","typeRoots":["./node_modules/@types","./typings","./src"],"types":["webpack-env","jest"]},"exclude":["node_modules"],"extends":"./node_modules/@project/ts/config/base.json","include":["src/**/*.ts","src/**/*.tsx","src/**/*.vue","tests/**/*.ts","tests/**/*.tsx"]},"resolved":{"compileOnSave":false,"configFileSpecs":{"excludeSpecs":["node_modules"],"includeSpecs":["src/**/*.ts","src/**/*.tsx","src/**/*.vue","tests/**/*.ts","tests/**/*.tsx"],"validatedExcludeSpecs":["node_modules"],"validatedIncludeSpecs":["src/**/*.ts","src/**/*.tsx","src/**/*.vue","tests/**/*.ts","tests/**/*.tsx"],"wildcardDirectories":{"/home/adcruz/Documents/project/admin-portal/src":1,"/home/adcruz/Documents/project/admin-portal/tests":1}},"errors":[],"fileNames":["/home/adcruz/Documents/project/admin-portal/src/index.d.ts","/home/adcruz/Documents/project/admin-portal/src/main.ts","/home/adcruz/Documents/project/admin-portal/src/shims-tsx.d.ts","/home/adcruz/Documents/project/admin-portal/src/shims-vue.d.ts","/home/adcruz/Documents/project/admin-portal/src/components/login/types.ts","/home/adcruz/Documents/project/admin-portal/src/plugins/googlesignin.ts","/home/adcruz/Documents/project/admin-portal/src/plugins/vuetify.ts","/home/adcruz/Documents/project/admin-portal/src/router/index.ts","/home/adcruz/Documents/project/admin-portal/src/router/routes.ts","/home/adcruz/Documents/project/admin-portal/src/services/accounts.ts","/home/adcruz/Documents/project/admin-portal/src/services/auth.ts","/home/adcruz/Documents/project/admin-portal/src/services/axios.ts","/home/adcruz/Documents/project/admin-portal/src/services/clients.ts","/home/adcruz/Documents/project/admin-portal/src/services/currency.ts","/home/adcruz/Documents/project/admin-portal/src/services/users.ts","/home/adcruz/Documents/project/admin-portal/src/services/util.ts","/home/adcruz/Documents/project/admin-portal/src/store/index.ts","/home/adcruz/Documents/project/admin-portal/src/store/Auth/index.ts","/home/adcruz/Documents/project/admin-portal/src/store/modules/accounts.ts","/home/adcruz/Documents/project/admin-portal/src/store/modules/clients.ts","/home/adcruz/Documents/project/admin-portal/src/store/modules/users.ts","/home/adcruz/Documents/project/admin-portal/tests/unit/components/client-management/EditClient.spec.ts","/home/adcruz/Documents/project/admin-portal/tests/unit/components/helpers/Offset.spec.ts","/home/adcruz/Documents/project/admin-portal/tests/unit/components/ui/CustomCard.spec.ts","/home/adcruz/Documents/project/admin-portal/tests/unit/components/ui/Filtering.spec.ts","/home/adcruz/Documents/project/admin-portal/tests/unit/components/user-management/NewUser.spec.ts","/home/adcruz/Documents/project/admin-portal/tests/unit/login/GoogleSignIn.ts","/home/adcruz/Documents/project/admin-portal/tests/unit/services/util.spec.ts"],"options":{"allowSyntheticDefaultImports":true,"allowUnreachableCode":false,"allowUnusedLabels":false,"baseUrl":"/home/adcruz/Documents/project/admin-portal/","configFilePath":"/home/adcruz/Documents/project/admin-portal/tsconfig.json","declaration":false,"esModuleInterop":true,"experimentalDecorators":false,"forceConsistentCasingInFileNames":true,"importHelpers":true,"inlineSourceMap":false,"inlineSources":true,"jsx":1,"lib":["lib.esnext.d.ts","lib.dom.d.ts","lib.dom.iterable.d.ts","lib.scripthost.d.ts"],"module":1,"moduleResolution":2,"noEmit":false,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitAny":false,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":false,"noUnusedParameters":true,"outDir":"$$ts-jest$$","paths":{"@/*":["src/*"]},"pretty":true,"removeComments":false,"resolveJsonModule":true,"sourceMap":true,"strict":true,"target":6,"typeRoots":["/home/adcruz/Documents/project/admin-portal/node_modules/@types","/home/adcruz/Documents/project/admin-portal/typings","/home/adcruz/Documents/project/admin-portal/src"],"types":["webpack-env","jest"]},"raw":{"compileOnSave":false,"compilerOptions":{"allowSyntheticDefaultImports":true,"baseUrl":"./","esModuleInterop":true,"experimentalDecorators":false,"importHelpers":true,"jsx":"preserve","lib":["esnext","dom","dom.iterable","scripthost"],"module":"esnext","moduleResolution":"node","noImplicitAny":false,"noImplicitThis":true,"noUnusedLocals":false,"paths":{"@/*":["src/*"]},"sourceMap":true,"strict":true,"target":"esnext","typeRoots":["./node_modules/@types","./typings","./src"],"types":["webpack-env","jest"]},"exclude":["node_modules"],"extends":"./node_modules/@project/ts/config/base.json","include":["src/**/*.ts","src/**/*.tsx","src/**/*.vue","tests/**/*.ts","tests/**/*.tsx"]},"typeAcquisition":{"enable":false,"exclude":[],"include":[]},"wildcardDirectories":{"/home/adcruz/Documents/project/admin-portal/src":1,"/home/adcruz/Documents/project/admin-portal/tests":1}}},"version":"23.10.4"},"message":"normalized typescript config","sequence":15,"time":"2018-12-21T03:17:37.276Z"}

daividh commented 5 years ago

Same problem here. Have you found a solution ?

serratedserenade commented 5 years ago

Same problem here. Have you found a solution ?

So, for some reason, the issue was I was using an async function in a .vue file (and this error only showed for this file, no other .vue file). It was declared as a method BUT I never declared a return type, so it looked sort of like:

Before fix:

export default Vue.extends({
...
methods: {
  async someFunction() {
    ...
  }
}
...
})

After fix:
export default Vue.extends({
...
methods: {
  async someFunction(): Promise<void> {
    ...
  }
}
...
})

Still not sure how and why would make it not crash with this error but oh well.