Skip to content

Upgrade Node from 22.x to 24.x (blocked by graphql-shield's util.isUndefined import) #81

Description

@gennitdev

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

  • Upgrade / replace graphql-shield (or patch the util.isUndefined import) so it loads under Node 24.
  • Bump engines.node to 24.x and update any .nvmrc / CI Node version.
  • Re-run the integration test suite (npm run test:integration, testcontainers + Docker) on Node 24 and fix any other Node 24 incompatibilities that surface.
  • Verify the dev server and Heroku/CI build on Node 24.

Impact

Once done, both repos use Node 24 and contributors no longer need to swap Node versions between frontend and backend work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions