Configurer le fichier principal Node.js
Sur l'hébergement d'applications, la plateforme n'exécute pas votre projet au hasard : elle lance le fichier désigné par le champ MAIN_FILE, avec index.js comme valeur par défaut. Un chemin incorrect donne un processus qui démarre puis s'arrête aussitôt, souvent avec Cannot find module dans la console. Voici comment définir ce point d'entrée et corriger les erreurs de chemin.
Ce que désigne le fichier principal
MAIN_FILE contient le chemin du fichier que Node.js doit exécuter, relativement à la racine du projet. Si votre point d'entrée est à la racine, la valeur est simplement index.js. S'il se trouve dans un sous-dossier, écrivez src/server.js : le chemin part de la racine du service, pas du dossier où vous avez téléversé l'archive.
Le fichier doit être du JavaScript exécutable par le runtime choisi :
- CommonJS :
require(...)etmodule.exports, extension.jsou.cjs. - Modules ES :
import ... from ..., extension.mjs, ou.jsavec"type": "module"danspackage.json.
Un fichier .ts ne se lance pas directement : compilez-le au préalable, puis pointez vers le fichier produit, par exemple dist/index.js.
MAIN_FILE ou script de démarrage
Deux mécanismes peuvent coexister : le fichier principal exécuté par la plateforme (node index.js) et le script start de package.json. Gardez une seule source de vérité. Si npm start lance node dist/server.js, faites pointer MAIN_FILE vers le même fichier, sinon vous debuggerrez deux chemins différents selon le mode de démarrage.
Un cas fréquent : le projet est compilé dans dist/ mais MAIN_FILE reste sur index.js. Le fichier source contient des import non transpilés ou n'existe plus après le build. Vérifiez le contenu réel du dossier après compilation, pas seulement votre dépôt local.
Corriger « fichier introuvable »
Le message typique ressemble à Error: Cannot find module '/home/container/index.js' ou MODULE_NOT_FOUND. Dans la console du panneau, listez les fichiers :
ls -la
find . -maxdepth 3 -name "*.js" -not -path "./node_modules/*"Trois causes reviennent :
- Archive imbriquée : le zip a créé
mon-projet/mon-projet/index.js. Déplacez le contenu à la racine ou corrigez le chemin. - Casse : Linux distingue
Index.jsetindex.js. Renommez avec la casse exacte. - Mauvais dossier : le fichier est dans
src/mais MAIN_FILE indique la racine.
Après correction, redémarrez le service et relisez le journal depuis la première ligne, pas seulement la dernière.
Vérifier
- Le journal affiche votre message de démarrage ou
listening on .... - Le service reste actif plus de quelques secondes, sans boucle de redémarrage.
- La route de santé, si vous en avez une, répond en 200.
- Après un renommage, MAIN_FILE et les imports internes ont été mis à jour.
Gardez un point d'entrée stable à la racine (index.js) qui importe le reste depuis src/. Ce fichier change rarement, et le champ MAIN_FILE reste correct même lorsque l'organisation interne évolue.
Publicité
Cet article vous a-t-il aidé ?
À lire aussi
- Comprendre package.json et npmLes champs utiles du manifeste, la différence entre dépendances et outils de développement, et quand utiliser npm install ou npm ci.
- Faire écouter Node.js sur le bon portLire le port alloué, écouter sur 0.0.0.0 et diagnostiquer les conflits.
- Configurer les variables d'environnement Node.jsLire, valider et définir des variables dans le panneau, sans jamais mettre un secret dans le dépôt Git.