cypress: Cypress cannot start with importHelpers and allowJS TypeScript options

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

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 5
  • Comments: 16 (5 by maintainers)

Commits related to this issue

Most upvoted comments

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.

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

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!

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.

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.