node.js - Déploiement de Loopback 4 sur Heroku, erreur lb-tsc introuvable
J'essaie de déployer une application Loopback 4 sur Heroku. Mais après l'avoir publiée, la commande npm start ne fonctionne pas dans la console Heroku. Elle renvoie sh: 1: lb-tsc not found. Le fichier package.json est le suivant
"devDependencies": {
"@loopback/build": "^3.0.0",
"@loopback/eslint-config": "^5.0.0",
"@loopback/testlab": "^1.10.0",
"@types/node": "^10.17.6",
"@typescript-eslint/eslint-plugin": "^2.10.0",
"@typescript-eslint/parser": "^2.10.0",
"eslint": "^6.7.2",
"eslint-config-prettier": "^6.7.0",
"eslint-plugin-eslint-plugin": "^2.1.0",
"eslint-plugin-mocha": "^6.2.2",
"source-map-support": "^0.5.16",
"typescript": "~3.7.3"},
"scripts": {
"build": "lb-tsc",
"build:watch": "lb-tsc --watch",
"clean": "lb-clean dist *.tsbuildinfo",
.......
"lb-tsc": "lb-tsc",
"postinstall": "npm run lb-tsc"
}
Réponse #1
Créer un Procfile à la racine du projet contenant web: node . a résolu ce problème pour moi. Sans cela, Heroku démarrera par défaut l'application en appelant npm run, ce qui essaie d'exécuter le processus de build, et comme @loopback/build est configuré comme dépendance de développement par défaut, cela entraîne l'erreur lb-tsc not found.
Réponse #2
Lorsque heroku exécute une application node, la valeur de process.env.NODE_ENV est "production" ; vous pouvez le vérifier depuis le terminal bash de heroku en tapant node puis process.env. Et cela signifie que les dépendances de développement ne sont pas résolues.
Les étapes ci-dessous fonctionnent bien pour moi
- Ouvrez le fichier package.json, copiez tout de la section des dépendances de développement et collez-le dans la section des dépendances dans package.json
- git add . puis git commit puis git push heroku master
Une autre solution : Après avoir poussé les fichiers vers Heroku en utilisant git push heroku master, allez dans le terminal Heroku depuis https://dashboard.heroku.com/ et démarrez la console, puis exécutez la commande node dist/index.js. Cette commande démarrera l'application LoopBack, assurez-vous que le dossier dist est disponible.