Knoten und Shebang: Hilfe bei der Ausführung über die Befehlszeile

73

Meine Knoteninstallation ist bei:

/usr/local/bin/node

und ich habe den shebang hinzugefügt:

#!/usr/local/bin/node

an den Anfang der Datei und meine Knoten-App-Datei mit den Berechtigungen 755 versehen, aber wenn ich versuche auszuführen:

> ./my-app

Ich bekomme das alte:

-bash: ./my-app: No such file or directory

Was mache ich falsch?

fragen
quelle
1
Ich vermute, Sie befinden sich einfach in einem falschen Verzeichnis. ls -l ./my-appsollte helfen.
Nur jemand
Hoppla, ich denke, das lag daran, dass ich am Ende meiner Datei .js hatte: Durch Entfernen des Dateityps von "my-app.js" zu "my-app" konnte ich es ausführen> ./my-app
fragen

Antworten:

200

Der Knoten shebang ist:

#!/usr/bin/env node

Nicht alle Systeme platzieren den Knoten am selben Standort. Möglicherweise haben Sie den Standort falsch angegeben. Dies wird sie alle finden.

Quelle

Ebenfalls

Sekretformel
quelle
@asking sollten Sie in der Lage sein, den .jsTeil dort zu haben
secretformula
1
Hmm, dann geht mein Kopfkratzen weiter: Meine Datei wurde "my-app.js" genannt, habe den Shebang #!/usr/bin/env nodeund der Knoten befindet sich auf meinem Pfad unter "/ usr / local / bin / node". Sobald ich die ".js" entfernt hatte, betrachtete das Mac OS sie vermutlich als Binärdatei, und ich konnte sie als solche ausführen. Aber jetzt bin ich wieder verwirrt - selbstverständlich.
Fragen
2
@secretformula für den Datensatz, es funktioniert auf meinem MacOS (Sierra) ohne Erweiterung, wie es sollte. chmod +xwar natürlich notwendig.
Jeff Huijsmans
Diese Antwort erklärt im Detail, warum dies der richtige Schebang ist.
Dan Dascalescu