ACLClouds
ACLClouds

La version Node.js ou Python est incompatible avec le projet

Lire les prérequis du projet, sélectionner la bonne version de Node.js ou de Python et réinstaller les dépendances natives.

Les erreurs Unsupported engine, les erreurs de syntaxe ou l’absence de wheel Python compatible apparaissent quand le projet et l’image du conteneur ciblent des versions différentes.

Procédure étape par étape

  1. Lire les contraintes

    Consultez engines dans package.json, .nvmrc, runtime.txt, pyproject.toml ou la documentation du framework.

  2. Choisir une version maintenue

    Préférez une version LTS de Node.js ou une version de Python explicitement prise en charge par les dépendances du projet.

  3. Reconstruire les modules

    Après un changement de version majeure, réinstallez les dépendances pour remplacer les binaires natifs compilés pour l’ancienne version.

  4. Tester la commande

    Relevez la version indiquée à la ligne « Environnement » du statut du bot, puis redémarrez-le et relisez la console depuis le début.

Version de Node.js attendue (package.json)

{
  "engines": {
    "node": ">=22"
  }
}

Version de Python attendue (pyproject.toml)

[project]
requires-python = ">=3.12"

Changer la version du runtime

Sur ACLClouds, la version se choisit dans l’onglet « Démarrage » du bot, carte « Version du runtime ». Le champ « Version » propose Node.js 20, 22 ou 24 pour un bot Node.js, et Python 3.11, 3.12 ou 3.13 pour un bot Python. Enregistrez, puis confirmez le changement.

Les dépendances sont réinstallées au prochain démarrage et un bot en ligne redémarre. Une fois le bot relancé, la ligne « Environnement » de son statut indique la version réellement utilisée : comparez-la à celle que demande le projet.

Déclarer la version attendue

Un projet qui annonce sa version produit une erreur claire dès l’installation, au lieu d’un plantage difficile à lire plus tard. Quelques habitudes évitent la plupart des incompatibilités.

  • Node.js : renseignez engines dans package.json avec la version utilisée pendant le développement.
  • Python : renseignez requires-python dans pyproject.toml et fixez les versions dans requirements.txt.
  • N’envoyez pas node_modules ni un environnement virtuel créé sur votre ordinateur : leurs binaires sont compilés pour un autre système et une autre version.

Questions fréquentes

Que signifie npm warn EBADENGINE Unsupported engine ?

Une dépendance exige une autre version de Node.js. Les lignes suivantes donnent la plage demandée (required) et la version active (current). Choisissez dans « Démarrage » une version comprise dans cette plage, ou installez une version plus ancienne de la dépendance.

Pourquoi Error [ERR_REQUIRE_ESM]: require() of ES Module ?

Le code charge avec require() un paquet publié uniquement en modules ES, ce que Node.js 20 refuse. Passez à Node.js 24, qui accepte ce chargement, ou remplacez l’appel par import(). Vous pouvez aussi revenir à la dernière version du paquet encore publiée en CommonJS.

Que faire face à ERROR: Could not find a version that satisfies the requirement ?

pip ne trouve aucune version du paquet compatible avec le Python actif. Si le message mentionne Requires-Python, la version fixée dans requirements.txt est trop ancienne ou trop récente pour ce Python. Changez la version de Python, ou fixez une version du paquet qui la prend en charge.

Pourquoi ModuleNotFoundError: No module named 'audioop' avec Python 3.13 ?

Python 3.13 a retiré le module audioop, dont dépendent les anciennes versions de discord.py. Mettez discord.py à jour dans requirements.txt, ajoutez le paquet audioop-lts, ou repassez le bot en Python 3.12.

Que signifie was compiled against a different Node.js version ?

Un module natif a été compilé pour une autre version de Node.js, souvent parce que le dossier node_modules vient de votre ordinateur. Supprimez ce dossier dans l’onglet « Fichiers », puis redémarrez le bot : les dépendances sont réinstallées pour la version active.