node.js - Nasadenie Loopback 4 na Heroku, chyba lb-tsc nenájdená
Snažím sa nasadiť aplikáciu Loopback 4 na Heroku. Ale po publikovaní príkaz npm start v konzole Heroku nefunguje. Zobrazuje sa chyba sh: 1: lb-tsc not found. Súbor package.json je nasledovný
"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"
}
Odpoveď č. 1
Vytvorenie súboru Procfile v koreňovom adresári projektu, ktorý obsahuje web: node ., mi tento problém vyriešilo. Bez neho Heroku automaticky spustí aplikáciu volaním npm run, čo sa snaží spustiť proces buildovania, a keďže @loopback/build je nastavený ako vývojová závislosť (dev dependency) predvolene, výsledkom je chyba lb-tsc not found.
Odpoveď č. 2
Keď heroku spustí Node aplikáciu, hodnota process.env.NODE_ENV je „production“, môžete si to overiť z terminálu Heroku bash zadaním node a potom process.env. A to znamená, že vývojové závislosti sa neriešia.
Nižšie uvedené kroky mi fungujú dobre
- Otvorte súbor package.json, skopírujte všetko zo sekcie dev dependency a vložte to do sekcie dependency v súbore package.json
- git add . potom git commit a potom git push heroku master
Ďalšie riešenie: Po odoslaní súborov do Heroku pomocou git push heroku master prejdite do terminálu Heroku na https://dashboard.heroku.com/ a spustite konzolu, potom spustite príkaz node dist/index.js, takže týmto príkazom sa spustí aplikácia loopBack. Uistite sa, že priečinok dist je dostupný.