From ca92aaf9ca2b7edb2e68c0204afed06c6bf5057c Mon Sep 17 00:00:00 2001 From: Valentyne Stigloher Date: Sat, 6 Apr 2024 00:42:07 +0200 Subject: [PATCH] (node) upgrade node to 18.20.1 ts-node needs to be configured differently to keep working, so run-script is used to abstract away the necessary arguments --- .gitlab-ci.yml | 14 +++++++------- .nvmrc | 2 +- Makefile | 10 +++++----- README.md | 6 +----- package.json | 1 + server/ts-node-esm.js | 4 ++++ tsconfig.json | 1 - 7 files changed, 19 insertions(+), 19 deletions(-) create mode 100644 server/ts-node-esm.js diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1ed870553..29162639c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,6 @@ check: stage: test - image: node:18.17.1 + image: node:18.20.1 before_script: - set -o pipefail - export NODE_ENV=development @@ -57,12 +57,12 @@ check: # calls scripts to check for simple issues while disabling actual work (e.g. no publishing to third party) # some scripts are left out because they need special configuration or are not safe to smoke test - start_section "Smoke test server scripts" - - yarn ts-node server/migrate.ts || record_failure "Smoke test migrate" - - yarn ts-node server/calendarBot.js en,pl,es,pt,de,nl,fr,ja,ru,sv,lad,ua,vi "" || record_failure "Smoke test calendarBot" - - yarn ts-node server/cleanupAccounts.js || record_failure "Smoke test cleanupAccounts" - - yarn ts-node server/notify.js || record_failure "Smoke test notify" - - yarn ts-node server/stats.ts || record_failure "Smoke test stats" - - yarn ts-node server/subscriptions.js || record_failure "Smoke test subscriptions" + - yarn run-script server/migrate.ts || record_failure "Smoke test migrate" + - yarn run-script server/calendarBot.js en,pl,es,pt,de,nl,fr,ja,ru,sv,lad,ua,vi "" || record_failure "Smoke test calendarBot" + - yarn run-script server/cleanupAccounts.js || record_failure "Smoke test cleanupAccounts" + - yarn run-script server/notify.js || record_failure "Smoke test notify" + - yarn run-script server/stats.ts || record_failure "Smoke test stats" + - yarn run-script server/subscriptions.js || record_failure "Smoke test subscriptions" - end_section - > diff --git a/.nvmrc b/.nvmrc index 860cc5000..ef33d6510 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v18.17.1 +v18.20.1 diff --git a/Makefile b/Makefile index 37659eb1c..0428748b7 100644 --- a/Makefile +++ b/Makefile @@ -12,8 +12,8 @@ install: mkdir -p moderation touch moderation/sus.txt moderation/rules-users.md moderation/rules-terminology.md moderation/rules-sources.md yarn - yarn ts-node server/migrate.ts - yarn ts-node locale/generateSchemas.ts + yarn run-script server/migrate.ts + yarn run-script locale/generateSchemas.ts lint: yarn lint @@ -34,10 +34,10 @@ deploy: install mkdir -p ./cache git log -n 1 --pretty=format:"%H" > ./cache/version yarn build - yarn ts-node server/migrate.ts + yarn run-script server/migrate.ts ln -sfn ../data/img ./static/img-local ln -sfn ../data/docs ./static/docs-local - yarn ts-node server/sentry.ts + yarn run-script server/sentry.ts switch: rm -rf cache @@ -47,4 +47,4 @@ switch: if [ -d ./locale/${LANG}/img/logo ]; then echo ""; else ln -s ../../_/img/logo ./locale/${LANG}/img/logo; fi migrate: - yarn ts-node server/migrate.ts + yarn run-script server/migrate.ts diff --git a/README.md b/README.md index 50fe51d37..52e564b95 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Dependencies -- [NodeJS](https://nodejs.org/en) version 18.17.1 +- [NodeJS](https://nodejs.org/en) version 18.20.1 - [Yarn](https://yarnpkg.com/getting-started/install) or other package manager ## Installation @@ -213,10 +213,6 @@ If you experience a `JavaScript heap out of memory` error, it may help to disabl }, ``` -#### `ts-node` on another Node version -If you use another node version and run into an error when using `yarn ts-node` (e.g. `Unknown file extension ".ts"`), then either use the recommended node version or use `ts-node` via an experimental loader: -`node --loader ts-node/esm`. - ## Translation ### Contributing to an existing language version diff --git a/package.json b/package.json index 0f1328762..3ce766da1 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "start": "nuxt start", "export": "nuxt export", "serve": "nuxt serve", + "run-script": "NODE_OPTIONS=\"--import ./server/ts-node-esm.js\" node", "lint": "eslint --ext .cjs,.js,.json,.suml,.ts,.yml,.vue --fix .", "test": "node --experimental-vm-modules $(yarn bin jest)" }, diff --git a/server/ts-node-esm.js b/server/ts-node-esm.js new file mode 100644 index 000000000..9e438057f --- /dev/null +++ b/server/ts-node-esm.js @@ -0,0 +1,4 @@ +import { register } from 'node:module'; +import { pathToFileURL } from 'node:url'; + +register('ts-node/esm', pathToFileURL('./')); diff --git a/tsconfig.json b/tsconfig.json index be70d2f08..e4f05a284 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -36,7 +36,6 @@ "census" ], "ts-node": { - "esm": true, // skip type checking as it causes some problems with CommonJS dependencies; type checking happens separately "transpileOnly": true }