ACLClouds
ACLClouds

Comment installer les dépendances de mon bot ?

Installez les dépendances Node.js ou Python de votre bot avec npm ci ou pip, utilisez les lockfiles et corrigez les erreurs de compilation courantes.

Les dépendances doivent être décrites dans le projet. N’importez pas node_modules ou un environnement virtuel créé sur votre ordinateur.

Procédure étape par étape

  1. Node.js

    Conservez package.json et le lockfile, puis lancez npm ci pour une installation reproductible.

  2. Python

    Conservez requirements.txt ou pyproject.toml, puis installez les paquets avec pip dans l’environnement du serveur.

  3. Lire la première erreur

    Vérifiez la version de Node.js ou de Python, les paquets système manquants et l’état du lockfile.

  4. Redémarrer après succès

    Redémarrez le service après une installation sans erreur, puis vérifiez que le bot se charge.

Node.js

npm ci --omit=dev

Python

python -m pip install --user -r requirements.txt

Figer les dépendances Python en local

python -m venv .venv
source .venv/bin/activate
pip install discord.py python-dotenv
pip freeze > requirements.txt

Installation automatique au démarrage

Vous n’avez pas de terminal à ouvrir. À chaque démarrage, la plateforme compare les fichiers de dépendances et la version de Node.js ou de Python avec la dernière installation réussie. Si rien n’a changé, le bot démarre aussitôt. Sinon, la console affiche « Installation des dépendances (npm install) », ou pip install pour Python, puis la sortie de l’installateur et « Dépendances installées en 12 s ».

Pour Node.js, le lockfile présent est respecté : package-lock.json, yarn.lock ou pnpm-lock.yaml. Sans lockfile, les versions sont choisies depuis package.json au moment de l’installation et peuvent différer de celles testées sur votre ordinateur. Les scripts d’installation des paquets, par exemple la compilation d’un module natif, sont exécutés dans un environnement isolé.

Pour Python, la plateforme installe requirements.txt, ou à défaut les dependencies de la section [project] de pyproject.toml. Les paquets vont dans le dossier .deps du bot, déjà connu de Python : n’envoyez ni venv ni .venv.

Quand l’installation échoue

La console affiche « Échec de l’installation des dépendances » suivi de la cause. Remontez à la première ligne d’erreur de l’installateur : les suivantes n’en sont souvent que la conséquence. Corrigez le fichier concerné, puis redémarrez le bot pour relancer l’installation.

Si le code importe un paquet absent, la console affiche une carte « Module manquant » avec un bouton « Installer ». Il ajoute le paquet à package.json ou à requirements.txt, puis redémarre le bot pour l’installer. Remplacez ensuite la version ajoutée par celle que vous avez testée.

Contrôler l’installation

Après un changement de dépendances, la console doit montrer « Dépendances installées en 12 s », puis la commande lancée, par exemple $ node index.js ou $ python -u bot.py, et enfin les messages de votre code. Au redémarrage suivant, sans modification de fichiers, aucune installation ne doit apparaître.

Questions fréquentes

Faut-il envoyer le dossier node_modules ?

Non. Avant chaque installation, la plateforme supprime le dossier des dépendances (node_modules ou .deps) et le reconstruit pour son propre système. L’envoyer ralentit seulement le transfert et occupe de l’espace : sur l’offre gratuite, un envoi est limité à 100 Mo. Excluez-le de vos archives et de Git.

Pourquoi ModuleNotFoundError: No module named 'dotenv' alors que j’ai ajouté dotenv ?

Le nom importé diffère souvent du nom à installer : import dotenv demande le paquet python-dotenv, import yaml demande PyYAML et import PIL demande Pillow. Écrivez dans requirements.txt le nom du paquet, pas celui du module, puis redémarrez le bot.

Que fait « Réinstaller le serveur » sur un bot ?

Dans Paramètres, ce bouton supprime le dossier des dépendances, relance l’installation à partir des fichiers actuels, puis redémarre le bot. Vos fichiers et vos variables ne sont pas modifiés. Utilisez-le si l’installation semble incomplète alors que package.json et requirements.txt n’ont pas changé.