mirror of
https://github.com/cypress-io/cypress.git
synced 2026-05-12 18:29:53 -05:00
fix: support type: module in Node.js 16.17.0+ and 18.6.0+ (#23637)
* chore: bump ts-node version * debugging * update tests with docker images and docker script * Update system-tests/scripts/bootstrap-docker-container.sh Co-authored-by: Zach Bloomquist <git@chary.us> * use chown * Update system-tests/scripts/bootstrap-docker-container.sh Co-authored-by: Zach Bloomquist <git@chary.us> * Update bootstrap-docker-container.sh * Update bootstrap-docker-container.sh Co-authored-by: Zach Bloomquist <git@chary.us>
This commit is contained in:
@@ -26,7 +26,7 @@
|
||||
"dedent": "^0.7.0",
|
||||
"mocha": "^9.2.2",
|
||||
"sinon": "^13.0.1",
|
||||
"ts-node": "^10.2.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"vite": "3.0.3",
|
||||
"vite-plugin-inspect": "0.4.3"
|
||||
},
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"proxyquire": "2.1.3",
|
||||
"sinon": "^13.0.1",
|
||||
"snap-shot-it": "^7.9.6",
|
||||
"ts-node": "^10.2.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"webpack": "npm:webpack@^5",
|
||||
"webpack-4": "npm:webpack@^4",
|
||||
"webpack-dev-server-3": "npm:webpack-dev-server@^3"
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
"sinon": "^9.0.0",
|
||||
"sinon-chai": "^3.5.0",
|
||||
"snap-shot-it": "7.9.2",
|
||||
"ts-node": "^10.2.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"webpack": "^4.44.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
||||
+1
-1
@@ -214,7 +214,7 @@
|
||||
"through": "2.3.8",
|
||||
"through2": "^4.0.2",
|
||||
"tree-kill": "1.2.2",
|
||||
"ts-node": "^10.2.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^4.7.4",
|
||||
"yarn-deduplicate": "3.1.0"
|
||||
},
|
||||
|
||||
@@ -271,7 +271,9 @@ export class ProjectConfigIpc extends EventEmitter {
|
||||
// ts-node for CommonJS
|
||||
// ts-node/esm for ESM
|
||||
if (hasTypeScriptInstalled(this.projectRoot)) {
|
||||
debug('found typescript in %s', this.projectRoot)
|
||||
if (isProjectUsingESModules) {
|
||||
debug(`using --experimental-specifier-resolution=node with --loader ${tsNodeEsm}`)
|
||||
// Use the ts-node/esm loader so they can use TypeScript with `"type": "module".
|
||||
// The loader API is experimental and will change.
|
||||
// The same can be said for the other alternative, esbuild, so this is the
|
||||
@@ -294,6 +296,8 @@ export class ProjectConfigIpc extends EventEmitter {
|
||||
// so we need to load and evaluate the hook first using the `--require` module API.
|
||||
const tsNodeLoader = `--require "${tsNode}"`
|
||||
|
||||
debug(`using cjs with --require ${tsNode}`)
|
||||
|
||||
if (childOptions.env.NODE_OPTIONS) {
|
||||
childOptions.env.NODE_OPTIONS += ` ${tsNodeLoader}`
|
||||
} else {
|
||||
@@ -303,6 +307,7 @@ export class ProjectConfigIpc extends EventEmitter {
|
||||
} else {
|
||||
// Just use Node's built-in ESM support.
|
||||
// TODO: Consider using userland `esbuild` with Node's --loader API to handle ESM.
|
||||
debug(`no typescript found, just use regular Node.js`)
|
||||
}
|
||||
|
||||
return fork(CHILD_PROCESS_FILE_PATH, configProcessArgs, childOptions)
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
"tough-cookie": "4.0.0",
|
||||
"trash": "5.2.0",
|
||||
"tree-kill": "1.2.2",
|
||||
"ts-node": "^10.2.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"tslib": "2.3.1",
|
||||
"underscore.string": "3.3.5",
|
||||
"url-parse": "1.5.9",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": "^4.3.2",
|
||||
"ts-node": "^10.2.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"tslib": "2.3.1",
|
||||
"typescript-cached-transpile": "^0.0.6"
|
||||
},
|
||||
|
||||
@@ -36,6 +36,9 @@ export CYPRESS_CACHE_FOLDER=/tmp/CYPRESS_CACHE_FOLDER/
|
||||
export npm_config_cache=/tmp/npm_config_cache/
|
||||
export npm_config_package_lock=false
|
||||
|
||||
mkdir $npm_config_cache
|
||||
chown -R 1000:1000 $npm_config_cache
|
||||
|
||||
npx npm@latest install --unsafe-perm --allow-root --force file:$CLI_PATH
|
||||
|
||||
PATH=$PATH:./node_modules/.bin
|
||||
@@ -52,4 +55,4 @@ set -e
|
||||
cd -
|
||||
rm -rf $TEST_PROJECT_DIR
|
||||
|
||||
exit $EXIT_CODE
|
||||
exit $EXIT_CODE
|
||||
|
||||
@@ -32,3 +32,20 @@ describe('binary node versions', () => {
|
||||
'cypress/base:17.3.0',
|
||||
].forEach(smokeTestDockerImage)
|
||||
})
|
||||
|
||||
describe('type: module', () => {
|
||||
[
|
||||
'cypress/base:16.17.0',
|
||||
'cypress/base:18.6.0',
|
||||
].forEach((dockerImage) => {
|
||||
systemTests.it(`can run in ${dockerImage}`, {
|
||||
withBinary: true,
|
||||
project: 'config-cjs-and-esm/config-with-ts-module',
|
||||
dockerImage,
|
||||
testingType: 'e2e',
|
||||
spec: 'app.cy.js',
|
||||
browser: 'electron',
|
||||
expectedExitCode: 0,
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -2293,17 +2293,12 @@
|
||||
resolved "https://registry.yarnpkg.com/@coolaj86/urequest/-/urequest-1.3.7.tgz#66a1d66378dd6534e9c8e68948bf09acf32bab77"
|
||||
integrity sha512-PPrVYra9aWvZjSCKl/x1pJ9ZpXda1652oJrPBYy5rQumJJMkmTBN3ux+sK2xAUwVvv2wnewDlaQaHLxLwSHnIA==
|
||||
|
||||
"@cspotcode/source-map-consumer@0.8.0":
|
||||
version "0.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b"
|
||||
integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==
|
||||
|
||||
"@cspotcode/source-map-support@0.7.0":
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5"
|
||||
integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==
|
||||
"@cspotcode/source-map-support@^0.8.0":
|
||||
version "0.8.1"
|
||||
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
|
||||
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
|
||||
dependencies:
|
||||
"@cspotcode/source-map-consumer" "0.8.0"
|
||||
"@jridgewell/trace-mapping" "0.3.9"
|
||||
|
||||
"@csstools/convert-colors@^1.4.0":
|
||||
version "1.4.0"
|
||||
@@ -4150,10 +4145,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186"
|
||||
integrity sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg==
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.0":
|
||||
version "0.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3"
|
||||
integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==
|
||||
"@jridgewell/trace-mapping@0.3.9", "@jridgewell/trace-mapping@^0.3.0":
|
||||
version "0.3.9"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
|
||||
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri" "^3.0.3"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
@@ -32749,12 +32744,12 @@ ts-log@^2.2.3:
|
||||
resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.3.tgz#4da5640fe25a9fb52642cd32391c886721318efb"
|
||||
integrity sha512-XvB+OdKSJ708Dmf9ore4Uf/q62AYDTzFcAdxc8KNML1mmAWywRFVt/dn1KYJH8Agt5UJNujfM3znU5PxgAzA2w==
|
||||
|
||||
ts-node@^10.2.1:
|
||||
version "10.7.0"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5"
|
||||
integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==
|
||||
ts-node@^10.9.1:
|
||||
version "10.9.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
|
||||
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
|
||||
dependencies:
|
||||
"@cspotcode/source-map-support" "0.7.0"
|
||||
"@cspotcode/source-map-support" "^0.8.0"
|
||||
"@tsconfig/node10" "^1.0.7"
|
||||
"@tsconfig/node12" "^1.0.7"
|
||||
"@tsconfig/node14" "^1.0.0"
|
||||
@@ -32765,7 +32760,7 @@ ts-node@^10.2.1:
|
||||
create-require "^1.1.0"
|
||||
diff "^4.0.1"
|
||||
make-error "^1.1.1"
|
||||
v8-compile-cache-lib "^3.0.0"
|
||||
v8-compile-cache-lib "^3.0.1"
|
||||
yn "3.1.1"
|
||||
|
||||
ts-node@^9:
|
||||
@@ -33656,10 +33651,10 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0:
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||
|
||||
v8-compile-cache-lib@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8"
|
||||
integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==
|
||||
v8-compile-cache-lib@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
|
||||
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
|
||||
|
||||
v8-compile-cache@^2.0.2, v8-compile-cache@^2.0.3:
|
||||
version "2.0.3"
|
||||
|
||||
Reference in New Issue
Block a user