
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