Summary
The backend pins engines.node to 22.x (package.json), while the frontend (multiforum-nuxt) requires Node ≥ 24.13.0. Contributors who work across both repos have to keep switching Node versions with nvm, which is error-prone. We should upgrade the backend to Node 24.x so the whole project lines up on one major.
Why it isn't already on 24
Running under Node 24 crashes at module-load time:
SyntaxError: The requested module 'util' does not provide an export named 'isUndefined'
at .../node_modules/graphql-shield/esm/rules.js:3
import { isUndefined } from 'util';
[email protected] (used by permissions.ts) does import { isUndefined } from 'util'. util.isUndefined was long-deprecated and is no longer exposed as a named ESM export under Node 24, so anything that imports the resolvers/permissions fails to load. This blocks the server and the integration test harness on Node 24; the tests only run on Node 22 today.
Proposed work
Impact
Once done, both repos use Node 24 and contributors no longer need to swap Node versions between frontend and backend work.
Summary
The backend pins
engines.nodeto22.x(package.json), while the frontend (multiforum-nuxt) requires Node ≥ 24.13.0. Contributors who work across both repos have to keep switching Node versions withnvm, which is error-prone. We should upgrade the backend to Node 24.x so the whole project lines up on one major.Why it isn't already on 24
Running under Node 24 crashes at module-load time:
[email protected](used bypermissions.ts) doesimport { isUndefined } from 'util'.util.isUndefinedwas long-deprecated and is no longer exposed as a named ESM export under Node 24, so anything that imports the resolvers/permissions fails to load. This blocks the server and the integration test harness on Node 24; the tests only run on Node 22 today.Proposed work
graphql-shield(or patch theutil.isUndefinedimport) so it loads under Node 24.engines.nodeto24.xand update any.nvmrc/ CI Node version.npm run test:integration, testcontainers + Docker) on Node 24 and fix any other Node 24 incompatibilities that surface.Impact
Once done, both repos use Node 24 and contributors no longer need to swap Node versions between frontend and backend work.