Website-Suche

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",

Verwandte Artikel