„/usr/bin/env node: Keine solche Datei im Verzeichnis“ – nur unter Supervisor

„/usr/bin/env node: Keine solche Datei im Verzeichnis“ – nur unter Supervisor

Wenn ich versuche, Node.js-Anwendungen unter Supervisor auszuführen, erhalte ich folgende Fehlermeldung:

/usr/bin/env node: No such file of directory

Es handelt sich um eine Maschine mit Ubuntu 16.04 und tatsächlich ist /usr/bin/node installiert und es ist symbolisch mit /usr/bin/nodejs verknüpft. Ich habe es von installiertNode.js-RepositoryWenn ich also laufe

node -v
/usr/bin/env node -v

Ich bekomme:

v9.7.1

Die Konfiguration meiner Anwendung für Supervisor (v 3.2.0) ist:

[program:verdaccio]
command=/usr/bin/verdaccio
autostart=true
autorestart=true
user=ubu
environment=HOME="/home/ubu",USER="ubu",PATH="$PATH:/home/ubu/.local/bin"

Was ist falsch?

Antwort1

Wenn Sie den Node-Version-Manager verwenden nvm, erstellen Sie mit diesem Kommentar einen symbolischen Link:

sudo ln -s "$(which node)" /usr/bin/node

Antwort2

Es stellt sich heraus, dass es ganz einfach ist, aber nichts mit dem Problem „kein symbolischer Link zu /usr/bin/node“ der Leute zu tun hat, die Node.js aus dem Repository des Standardsystems installiert haben.

Es handelt sich um ein Problem der Aufgabenkonfiguration des Supervisors. Nämlich dass

PATH="$PATH:/home/ubu/.local/bin"

bringt alles durcheinander. Es ist ein Artefakt aus einer Zeit, als ich Node von ~/.local/bin aus und nicht global ausgeführt habe. Habe es einfach gelöscht, den Supervisor neu geladen und jetzt läuft die Anwendung einwandfrei :)

Hoffe, es hilft jemandem.

Antwort3

In den meisten Fällen handelt es sich hierbei um ein einfaches Benennungsproblem. Wenn Sie die Installation über einen Paketmanager durchführen, heißt Ihre Binärdatei möglicherweise „nodejs“. In diesem Fall müssen Sie mit dem folgenden Befehl lediglich einen symbolischen Link darauf erstellen:

ln -s /usr/bin/nodejs /usr/bin/node

verwandte Informationen