What this error means
The engine "node" is incompatible with this module means the build or deployment failed in a clean automation environment. The cause is usually runtime version, lockfile state, secrets, project root, or deploy permissions.
Common causes
- Workflow uses an older Node version than package engines require
- .nvmrc and workflow configuration disagree
- Dependency requires a newer runtime
- Local build uses a different Node version than CI
Copy-paste commands
Check local Node version
node --version
npm --version
Reproduce a clean install
rm -rf node_modules
npm ci
Run the production build locally
npm run build
Check GitHub SSH from a runner-like shell
ssh -T git@github.com
Quick fixes
- Open the failed log and find the first error line above the stack trace.
- Set actions/setup-node to the project-supported Node.js version and keep .nvmrc or package engines aligned.
- Check Node version, working directory, lockfile state, and required secrets.
- Rerun the job only after committing the config or lockfile change.
Step-by-step troubleshooting
- Find the first log line containing
The engine "node" is incompatible with this module. - Check the job Node version and package manager command.
- Verify secrets are available for the event type; forked PRs often have restricted secrets.
- Compare the workflow working directory with the folder containing
package.json. - Run the same install and build commands locally from a clean checkout.
Platform-specific fixes
GitHub Actions
- Use
actions/setup-nodefor the intended Node version and keeppackage-lock.jsoncommitted fornpm ci.
Vercel
- Check the configured project root, build command, output directory, and environment variables in the Vercel project settings.
Real-world fixes
- If the lockfile error appears only in CI, regenerate and commit the lockfile instead of switching to
npm installin CI. - If deploy keys fail, confirm the public key is attached to the target repository and the private key secret keeps newlines intact.
- Set actions/setup-node to the project-supported Node.js version and keep .nvmrc or package engines aligned.
How to prevent it
- Keep workflow runtime versions explicit.
- Commit lockfiles and generated config needed at build time.
- Add a small CI job that runs the same build command before deploy.