For funsies, I upgraded node in my container and ran master against it. It seemed to load OK, with a warning about punycode:
bash-5.2# node --version
v22.10.0
bash-5.2# make dev
[nodemon] 3.1.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,ts,json,sql
[nodemon] starting `yarn dev:no-watch`
(node:357540) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
at node:punycode:3:9
at BuiltinModule.compileForInternalLoader (node:internal/bootstrap/realm:399:7)
at BuiltinModule.compileForPublicLoader (node:internal/bootstrap/realm:338:10)
at loadBuiltinModule (node:internal/modules/helpers:114:7)
at Function._load (node:internal/modules/cjs/loader:1100:17)
at TracingChannel.traceSync (node:diagnostics_channel:315:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:218:24)
at Module.<anonymous> (node:internal/modules/cjs/loader:1340:12)
at Hook._require.Module.require (/PrairieLearn/node_modules/require-in-the-middle/index.js:188:39)
at require (node:internal/modules/helpers:141:16) {
code: 'DEP0040'
}
info: PrairieLearn server ready, press Control-C to quit
info: Go to https://localhost:443
^C[nodemon] still waiting for 9 sub-processes to finish...
make: *** [Makefile:22: dev] Error 130
bash-5.2# npm ls punycode
prairielearn@ /PrairieLearn
+-- @prairielearn/prairielearn@1.0.0 -> ./apps/prairielearn
| +-- fetch-cookie@3.0.1
| | `-- tough-cookie@4.1.4
| | `-- punycode@2.3.1
| +-- jsdom@25.0.0
| | `-- whatwg-url@14.0.0
| | `-- tr46@5.0.0
| | `-- punycode@2.3.1 deduped
| `-- oauth-signature@1.5.0
| `-- uri-js@3.0.2
| `-- punycode@2.3.1 deduped
`-- eslint@8.57.0
`-- ajv@6.12.6
`-- uri-js@4.4.1
`-- punycode@2.3.1 deduped
As Node 22 transitions into ACTIVE and more dependencies update to use it, this might be easily available to us. But there's no rush. Node 20 stays in MAINTENANCE mode until mid-2026.
For funsies, I upgraded node in my container and ran
masteragainst it. It seemed to load OK, with a warning aboutpunycode:As Node 22 transitions into ACTIVE and more dependencies update to use it, this might be easily available to us. But there's no rush. Node 20 stays in MAINTENANCE mode until mid-2026.