Unterschied zwischen "npm start" und "node app.js" beim Starten der App?

188

Ich habe eine Anwendung mit dem Befehl installiert express new 'filename'. Ich habe gerade erfahren, dass Sie eine Anwendung starten können mit:

npm start

Bisher habe ich verwendet:

node app.js

um meinen Server zu starten. Weiß jemand, was der Unterschied zwischen den beiden ist? Vielen Dank.

RENGAED
quelle

Antworten:

267

Von der Manpage aus startet npm:

führt das "Start" -Skript eines Pakets aus, falls eines bereitgestellt wurde. Wenn keine Version angegeben ist, wird die "aktive" Version gestartet.

Zugegeben, diese Beschreibung ist völlig wenig hilfreich, und das ist alles, was sie sagt. Zumindest ist es dokumentierter als socket.io.

Was wirklich passiert ist, dass npm in Ihrer package.json- Datei aussieht und wenn Sie so etwas haben

"scripts": {"start": "Coffee Server.coffee"}

dann wird es das tun. Wenn npm Ihr Startskript nicht finden kann, lautet es standardmäßig:

Knoten server.js

 

Yusuf X.
quelle
4
Ah ich sehe. Es ist also im Wesentlichen dasselbe, es sei denn, Sie möchten beim Kompilieren mehr Skripte ausführen.
ReneGAED
1
Wenn Sie normalerweise "node server.js" eingeben, dann ja.
Yusuf X
1
Ich habe eine neue App erstellt, npm Start funktioniert nicht. für alte App läuft es gut. irgendwelche Vorschläge?
Lerner
1
Zum Beispiel nimmt "node app.js" keine Routeränderungen auf, während "npm start" dies tut, wenn es das Startskript package.json ausführt (wie "node ./bin/www")
Igor Vaschuk
1
Wenn Sie mit 'npm' beginnen, kann die App neu gestartet werden, indem Sie einfach 'rs' auf der Konsole eingeben.
Elf
10

Die Dokumentation wurde aktualisiert . Meine Antwort hat wesentliche Änderungen gegenüber der akzeptierten Antwort: Ich wollte widerspiegeln, dass die Dokumentation aktuell ist, und die akzeptierte Antwort enthält einige fehlerhafte Links.

Außerdem habe ich nicht verstanden, wann die akzeptierte Antwort "Standardmäßig node server.js" lautete . Ich denke, die Dokumentation verdeutlicht das Standardverhalten:

npm-start

Starten Sie ein Paket

Zusammenfassung

npm start [-- <args>]

Beschreibung

Dies führt einen beliebigen Befehl aus, der in der startEigenschaft " scripts" des Pakets " " angegeben ist . Wenn startfür das scriptsObjekt " " keine Eigenschaft " " angegeben ist , wird es ausgeführt node server.js.

Zusammenfassend kann das Laufen npm starteines von zwei Dingen bewirken:

  1. npm start {command_name}: Führen Sie einen beliebigen Befehl aus (dh wenn ein solcher Befehl in der startEigenschaft des scriptsObjekts von package.json angegeben ist )
  2. npm start: Andernfalls, wenn keine startEigenschaft vorhanden ist (oder keine übergeben command_namewird): Ausführen node server.js(was möglicherweise nicht angemessen ist , z. B. das OP nicht hat server.js; das OP wird ausgeführt nodeapp.js)
  3. Ich sagte, ich würde nur 2 Elemente auflisten, aber es gibt andere Möglichkeiten (dh Fehlerfälle). Wenn sich beispielsweise package.jsonin dem Verzeichnis, in dem Sie ausgeführt werden npm start, keine befindet, wird möglicherweise ein Fehler angezeigt:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
Die rote Erbse
quelle