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:
Lachlan Miller
2022-09-07 10:21:02 +10:00
committed by GitHub
parent b5ba6d7b87
commit b6dad0a674
10 changed files with 51 additions and 31 deletions
+1 -1
View File
@@ -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"
},
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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
View File
@@ -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)
+1 -1
View File
@@ -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",
+1 -1
View File
@@ -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,
})
})
})
+19 -24
View File
@@ -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"