Fait partie de Hébergement par cadricielHébergement · Node.js

Fixer la version de Node.js d’un déploiement : mettez la version majeure dans engines.node.

Indiquez la version majeure dans engines.node de package.json, par exemple "24.x". La plupart des plateformes la lisent, mais certaines préfèrent .nvmrc, .node-version ou une variable NODE_VERSION, sans s’entendre sur la priorité. Sur Canner, engines.node et le réglage Version de Node.js du projet décident. Il offre Node 24 et 22, et ignore .nvmrc.

Faits vérifiés le

Le fichier que lit chaque plateforme

Le même dépôt peut compiler sur trois versions de Node différentes selon l’endroit où vous le poussez. Voici ce que chaque plateforme documente, de la plus haute priorité à la plus basse.

PlateformeLit, par ordre de prioritéIgnore ou ne documente pasVersions
Cannerengines.node quand le réglage du projet ne le respecte pas; sinon le réglage Version de Node.js du projet.nvmrc, .node-version, une variable NODE_VERSION24, 22 (22 par défaut)
Vercel †engines.node de package.json, puis le réglage du projet.nvmrc n’est pas mentionné26.x (par défaut), 24.x, 22.x; versions majeures seulement
Netlify †Variable NODE_VERSION, .node-version ou .nvmrc, puis le réglage de l’interface, puis la version de l’image de compilationengines n’est pas mentionnéToute version que nvm peut installer
Render †NODE_VERSION, .node-version, .nvmrc, puis engines—24.22.1 par défaut pour les services créés depuis le 2026-10-21
Heroku †engines.node seulement.nvmrc et .node-version ne sont pas mentionnés24.x par défaut
Railway (Railpack) †RAILPACK_NODE_VERSION, devEngines.runtime, engines.node, .nvmrc, .node-version, mise.toml ou .tool-versions—La LTS courante par défaut

† Les détails sur les concurrents proviennent des pages publiées par chaque fournisseur aux dates indiquées; les prix et forfaits changent, vérifiez auprès du fournisseur avant de décider. Vercel (2026-10-29) · Netlify (2026-10-29) · Render (2026-10-29) · Heroku (2026-10-29) · Railway (Railpack) (2026-10-29)

Quoi écrire dans le fichier

Fixez une version majeure : 24.x. Vous recevez les correctifs de sécurité sans mauvaise surprise. Une version exacte comme 24.11.0 vous fige sur de vieux correctifs là où la plateforme le permet, et beaucoup n’offrent que des versions majeures de toute façon. Une plage ouverte comme >=18 n’a pas de plafond : le jour où une plateforme ajoute une version majeure, votre compilation peut y passer. La documentation de Heroku donne le même conseil.

Gardez .nvmrc si votre équipe utilise nvm ou fnm, mais voyez-le comme une commodité locale et gardez-le égal à engines.node. Quand les deux divergent, la plateforme lit l’un, votre poste lit l’autre, et la compilation qui « marche en local » échoue.

// package.json: the file deploy platforms read
{
  "engines": { "node": "24.x" }
}

# .nvmrc: for nvm and fnm on your machine (Canner ignores it)
24

Comment Canner choisit la version

Canner lit engines.node dans le package.json du répertoire racine de votre projet et le compare au réglage Version de Node.js du projet (Paramètres, Node 22 par défaut). Il ne compare que les versions majeures. Chaque cas écrit sa propre ligne dans le journal de compilation :

  • Pas de `engines.node` : le réglage s’applique. Le journal affiche [canner] node version: 22.
  • Le réglage respecte la plage : il est conservé. >=18 reste sur Node 22 plutôt que de sauter à 24 : une plage large ne fait jamais changer de version majeure un projet qui fonctionne.
  • Le réglage ne la respecte pas : Canner prend la version majeure la plus récente qu’il offre et qui convient, et le dit : [canner] package.json engines.node="^24" isn't satisfied by Node 22; building on Node 24.
  • Rien ne convient : la compilation s’arrête avant l’installation : package.json engines.node="20.x" needs a Node version Canner doesn't offer (available: 24, 22). Widen or remove engines.node, or set the project's Node version and turn on "force". Même chose avec 26.x, la version par défaut actuelle de Vercel.
  • La plage est illisible : Canner garde le réglage et note Couldn't read engines.node="…". Une borne supérieure écrite avec <= en est un exemple; écrivez >=18 <23 plutôt que >=18 <=22.
  • Les versions mineures ne sont pas comparées. >=22.17 est considéré comme respecté par Node 22. Si une dépendance exige une version mineure récente, choisissez Node 24.

Ignorer engines.node volontairement

Il arrive qu’une dépendance déclare une plage dont votre appli n’a pas vraiment besoin, ou que vous vouliez essayer une version majeure avant de modifier package.json. L’API offre un champ node_version_forced sur le projet : activé, Canner compile avec le réglage et note engines.node="…" ignored — this project pins Node 22. Il n’y a pas encore d’interrupteur dans le tableau de bord.

# Use the project's version and ignore engines.node
curl -X PATCH https://api.canner.ca/v1/projects/my-app \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"node_version": "24", "node_version_forced": true}'

Pourquoi une compilation prend la mauvaise version

  • La plateforme lit un autre fichier que celui que vous avez modifié. Netlify et Render lisent .nvmrc; Heroku ne documente que engines, et Canner ne lit pas .nvmrc. Voyez le tableau plus haut.
  • Une source prioritaire l’emporte. Sur Render ou Netlify, une variable NODE_VERSION réglée il y a longtemps dans le tableau de bord passe avant votre nouveau .nvmrc.
  • Le fichier est dans le mauvais répertoire. Dans un monodépôt, la plateforme lit le package.json du répertoire qu’elle compile. Sur Canner, c’est le répertoire racine du projet.
  • npm n’impose pas `engines`. Sans engine-strict, npm considère le champ comme indicatif et se contente d’avertir. C’est la plateforme, pas npm, qui décide s’il change la version de Node.
  • La version majeure est en fin de vie ou n’est pas offerte. Node 20 est en fin de vie. Une plateforme qui l’a retiré refuse la compilation ou vous fait monter de version.

Questions

Canner lit-il .nvmrc ou .node-version?

Non. Canner lit engines.node dans package.json et le réglage Version de Node.js du projet. Gardez .nvmrc pour vos outils locaux si vous le voulez, avec la même version majeure.

Quelles versions de Node.js Canner offre-t-il?

Node 24 et Node 22. Les nouveaux projets sont sur 22 par défaut. La liste des paramètres vient de ce qui est installé sur les serveurs de compilation : elle change quand une version majeure s’ajoute.

Pourquoi mon champ engines est-il ignoré?

npm considère engines comme indicatif sans engine-strict, et certaines plateformes (Netlify, selon sa documentation) choisissent Node à partir d’autres fichiers. Sur Canner, il n’est ignoré que si la version du projet est forcée.

Faut-il fixer une version exacte comme 24.11.0?

En général, non. Une plage majeure comme 24.x garde les correctifs de sécurité. Fixez une version exacte seulement pour reproduire un bogue, et seulement sur une plateforme qui installe des versions exactes.

Poussez une appli Node et lisez la version qu’elle a reçue.

Chaque journal de compilation nomme la version de Node et la raison du choix. D’autres guides sont dans hébergement par cadriciel.