Wie kompiliere ich Typescript bei Heroku postinstall?
Anstatt das vorkompilierte dist-Verzeichnis hochzuladen, möchte ich stattdessen src auf der Serverseite kompilieren.
Hier sind meine Skripte in der package.json:
"scripts": {
"test": "echo \"No test specified\" && exit 0",
"start": "node dist/app.js",
"postinstall": "tsc"
}
Hier sind die Abhängigkeiten:
"dependencies": {
"@types/express": "^4.11.1",
"@types/pg": "^7.4.4",
"@types/socket.io": "^1.4.31",
"body-parser": "^1.18.2",
"express": "^4.16.2",
"pg": "^7.4.1",
"socket.io": "^2.0.4",
"tslint": "^5.9.1",
"typescript": "^2.7.2"
}
Da 'npm install während der Installation den Ordner node_modules/.bin zur PATH-Umgebungsvariable hinzufügt', sollte Heroku in der Lage sein, ihn direkt aufzurufen.
Aber hier ist der Fehler, den ich erhalte:
Building dependencies
Installing node modules (package.json + package-lock)
> [email postinstall /tmp/build_afa42c7943d4b71d2b48a016ae3b9e50
> tsc
sh: 1: tsc: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! [email postinstall: `tsc`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the [email postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.LTxbD/_logs/2018-02-25T10_36_06_374Z-debug.log
-----> Build failed
Antwort #1
Sie müssen tsc aus einem npm-Skript aufrufen. Andernfalls versucht Heroku, eine globale Abhängigkeit namens tsc zu finden.
Erstellen Sie ein neues npm-Skript in Ihrer package.json:
"tsc": "tsc"
Ersetze nun "postinstall": "tsc" durch:
"postinstall": "npm run tsc"
Antwort #2
Typescript sollte als Entwicklungsabhängigkeit installiert werden
Haben Sie web: node server.js in Ihrer Procfile
Stelle sicher, dass du npm build als Postinstall-Skript hinzufügst
Dem npm mitzuteilen, dass TypeScript lokal installiert ist, wird das Problem „tsc nicht gefunden“ beheben, da npm versucht, es global auf Heroku zu finden.
wie dieses.
"tsc": "./node_modules/typescript/bin/tsc",
"build": "tsc",
"postinstall": "npm run build",
