Cypress: Cypress cannot start with importHelpers and allowJS TypeScript options

Created on 27 May 2020  路  16Comments  路  Source: cypress-io/cypress

Current behavior:

Attempting to launch Cypress with this tsconfig results in the following exception:

{
  "compilerOptions": {
    "importHelpers": true,
    "allowJs": true
  }
}
Error: Cannot find module 'tslib'
Require stack:
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\reporter\lib\resolve-dist.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\controllers\reporter.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\routes.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\server.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\project.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\gui\events.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\modes\interactive.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\modes\index.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\cypress.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\index.js
- C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\index.js
- 
    at Module._resolveFilename (internal/modules/cjs/loader.js:798:15)
    at Function../lib/common/reset-search-paths.ts.Module._resolveFilename (electron/js2c/browser_init.js:7630:16)
    at Module._load (internal/modules/cjs/loader.js:691:27)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\override_require.js:18:25)
    at Module.require (internal/modules/cjs/loader.js:853:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\reporter\lib\resolve-dist.js:1:15)
    at Module._compile (internal/modules/cjs/loader.js:968:30)
    at Module.m._compile (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\ts-node\src\index.ts:536:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:986:10)
    at Object.require.extensions.<computed> [as .js] (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\ts-node\src\index.ts:539:12)
    at Module.load (internal/modules/cjs/loader.js:816:32)
    at Module._load (internal/modules/cjs/loader.js:728:14)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\override_require.js:18:25)
    at Module.require (internal/modules/cjs/loader.js:853:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\controllers\reporter.js:8:14)
    at Object.<anonymous> (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\controllers\reporter.js:18:4)
    at Module._compile (internal/modules/cjs/loader.js:968:30)
    at Module.m._compile (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\ts-node\src\index.ts:536:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:986:10)
    at Object.require.extensions.<computed> [as .js] (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\ts-node\src\index.ts:539:12)
    at Module.load (internal/modules/cjs/loader.js:816:32)
    at Module._load (internal/modules/cjs/loader.js:728:14)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\override_require.js:18:25)
    at Module.require (internal/modules/cjs/loader.js:853:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\routes.js:9:18)
    at Module._compile (internal/modules/cjs/loader.js:968:30)
    at Module.m._compile (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\ts-node\src\index.ts:536:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:986:10)
    at Object.require.extensions.<computed> [as .js] (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\ts-node\src\index.ts:539:12)
    at Module.load (internal/modules/cjs/loader.js:816:32)
    at Module._load (internal/modules/cjs/loader.js:728:14)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\override_require.js:18:25)
    at Module.require (internal/modules/cjs/loader.js:853:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Server.createRoutes (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\server.js:159:14)
    at C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\server.js:205:17
    at tryCatcher (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\util.js:16:23)
    at Function.Promise.attempt.Promise.try (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\method.js:39:29)
    at Server.open (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\server.js:180:28)
    at C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\lib\project.js:135:26
    at tryCatcher (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\promise.js:547:31)
    at Promise._settlePromise (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\promise.js:604:18)
    at Promise._settlePromise0 (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\promise.js:649:10)
    at Promise._settlePromises (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\promise.js:729:18)
    at _drainQueueStep (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\async.js:93:12)
    at _drainQueue (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\async.js:86:9)
    at Async._drainQueues (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\async.js:102:5)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\Users\adgastin\AppData\Local\Cypress\Cache\4.7.0\Cypress\resources\app\packages\server\node_modules\bluebird\js\release\async.js:15:14)
    at processImmediate (internal/timers.js:439:21)

Removing either flag fixes the error. tslib is forcibly installed to guarantee there is no issue resolving it.

This appears to occur regardless of what is in the Cypress tsconfig, so as long as the parent project contains this config, Cypress cannot start.

Versions

Cypress 4.6.0 - 4.7.0

鈹咺ssue is synchronized with this Jira Bug by Unito

internal-priority typescript regression v4.4.0

Most helpful comment

According to the docs (https://docs.cypress.io/guides/tooling/typescript-support.html#Configure-tsconfig-json) we should be able to use a tsconfig.json inside the cypress directory to set importHelpers false.... but that doesn't appear to work for me.

All 16 comments

I'm getting the same error using any version that's >= 4.4.0. Works fine in 4.3.0.

I'm having the same issue with version 4.7.0 and any typescript version higher than 3.5.1 - at least that's the latest I found that everything is fine.

@agg23 try with this ts version

Same here.. the error message for 4.4.0 is a bit different then 4.7.0

Cannot use import statement outside a module
/home/user/.cache/Cypress/4.4.1/Cypress/resources/app/packages/reporter/lib/resolve-dist.js:1
import { __spreadArrays } from "tslib";
^^^^^^

I'm not able to reproduce this error with the information provided. Please provide a full example of this failing and the steps you took to see the error (cypress run vs cypress open, etc) - including any plugin/support/cypress.json files and spec files with tests.

cypress/integration/spec.js (also tried spec.ts)

it('test', () => {
 expect(true).to.be.true
})

tsconfig.json in the root of my project.

{
  "compilerOptions": {
    "importHelpers": true,
    "allowJs": true
  }
}

Screen Shot 2020-06-01 at 5 11 10 PM

@jennifer-shehane
You didn't npm install your root. It works if there is no root/node_modules/

I can reproduce the issue in here:

https://github.com/boxmein/cypress-7503

@boxmein Thanks! This repo does reproduce the issue as described.

Repro

No cypress files/folders required.

package.json - only happens in typescript versions 3.6.3+

{
  "devDependencies": {
    "cypress": "4.7.0",
    "typescript": "3.9.3"
  }
}

tsconfig.json

{
  "compilerOptions": {
    "importHelpers": true,
    "allowJs": true
  }
}

4.3.0

Screen Shot 2020-06-02 at 2 31 02 PM

4.4.0

Screen Shot 2020-06-02 at 2 06 49 PM

Stack trace:

Error: Cannot find module 'tslib'
Require stack:
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/reporter/lib/resolve-dist.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/controllers/reporter.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/routes.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/server.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/project.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/gui/events.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/modes/interactive.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/modes/index.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/cypress.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/index.js
- /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/index.js
- 
    at Module._resolveFilename (internal/modules/cjs/loader.js:798:15)
    at Function../lib/common/reset-search-paths.ts.Module._resolveFilename (electron/js2c/browser_init.js:7630:16)
    at Module._load (internal/modules/cjs/loader.js:691:27)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/override_require.js:18:25)
    at Module.require (internal/modules/cjs/loader.js:853:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/reporter/lib/resolve-dist.js:2:15)
    at Module._compile (internal/modules/cjs/loader.js:968:30)
    at Module.m._compile (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/ts-node/src/index.ts:536:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:986:10)
    at Object.require.extensions.<computed> [as .js] (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/ts-node/src/index.ts:539:12)
    at Module.load (internal/modules/cjs/loader.js:816:32)
    at Module._load (internal/modules/cjs/loader.js:728:14)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/override_require.js:18:25)
    at Module.require (internal/modules/cjs/loader.js:853:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/controllers/reporter.js:8:14)
    at Object.<anonymous> (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/controllers/reporter.js:18:4)
    at Module._compile (internal/modules/cjs/loader.js:968:30)
    at Module.m._compile (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/ts-node/src/index.ts:536:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:986:10)
    at Object.require.extensions.<computed> [as .js] (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/ts-node/src/index.ts:539:12)
    at Module.load (internal/modules/cjs/loader.js:816:32)
    at Module._load (internal/modules/cjs/loader.js:728:14)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/override_require.js:18:25)
    at Module.require (internal/modules/cjs/loader.js:853:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/routes.js:9:18)
    at Module._compile (internal/modules/cjs/loader.js:968:30)
    at Module.m._compile (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/ts-node/src/index.ts:536:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:986:10)
    at Object.require.extensions.<computed> [as .js] (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/ts-node/src/index.ts:539:12)
    at Module.load (internal/modules/cjs/loader.js:816:32)
    at Module._load (internal/modules/cjs/loader.js:728:14)
    at Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (electron/js2c/asar.js:717:26)
    at Function.Module._load (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/override_require.js:18:25)
    at Module.require (internal/modules/cjs/loader.js:853:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Server.createRoutes (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/server.js:159:14)
    at /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/server.js:205:17
    at tryCatcher (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/util.js:16:23)
    at Function.Promise.attempt.Promise.try (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/method.js:39:29)
    at Server.open (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/server.js:180:28)
    at /Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/lib/project.js:135:26
    at tryCatcher (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/promise.js:547:31)
    at Promise._settlePromise (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/promise.js:729:18)
    at _drainQueueStep (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/async.js:93:12)
    at _drainQueue (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/async.js:86:9)
    at Async._drainQueues (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/async.js:102:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/Users/jennifer/Library/Caches/Cypress/4.7.0/Cypress.app/Contents/Resources/app/packages/server/node_modules/bluebird/js/release/async.js:15:14)
    at processImmediate (internal/timers.js:439:21)

@jennifer-shehane Thank you for the thorough testing & bisection!

same here ! any progres ?

same here ! any progres ?

I fixed my own setup by not using "importHelpers" anymore. It might be possible to side-step this problem by setting the importHelpers flag to false.

According to the docs (https://docs.cypress.io/guides/tooling/typescript-support.html#Configure-tsconfig-json) we should be able to use a tsconfig.json inside the cypress directory to set importHelpers false.... but that doesn't appear to work for me.

According to the docs (https://docs.cypress.io/guides/tooling/typescript-support.html#Configure-tsconfig-json) we should be able to use a tsconfig.json inside the cypress directory to set importHelpers false.... but that doesn't appear to work for me.

@Hypercubed

I had the same issue when upgrading Cypress 4.3.0 -> 4.10.0. I used the default tsconfig.json that Cypress recommends, inside cypress/ dir. By default importHelpers are false in such config but I was still hitting the tslib error. What helped was setting importHelpers: false in our _root_ tsconfig.json (we had it explicitly enabled). Hope this helps!

@boxmein Thank you for providing this workaround!

This is being addressed by #7982 and should be released in Cypress v5.0.

The code for this is done in cypress-io/cypress#7982, but has yet to be released.
We'll update this issue and reference the changelog when it's released.

Hello... anyone been able to verify if this is fixed in 5.0? (I'm still haveing several issues keeping me at 4.3).

Released in 5.0.0.

This comment thread has been locked. If you are still experiencing this issue after upgrading to Cypress v5.0.0, please open a new issue.

Was this page helpful?
0 / 5 - 0 ratings