«/usr/bin/env node: Нет такого файла или каталога» — только под Supervisor

«/usr/bin/env node: Нет такого файла или каталога» — только под Supervisor

При попытке запустить приложения Node.js из-под Supervisor возникает следующая ошибка:

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

Это машина под управлением Ubuntu 16.04, и на самом деле там установлен /usr/bin/node, и он связан симлинком с /usr/bin/nodejs. Я установил его изРепозиторий Node.js. Так что когда я бегу

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

Я получил:

v9.7.1

Конфигурация моего приложения для Supervisor (v 3.2.0) следующая:

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

В чем дело?

решение1

Если вы используете nvmNode Version Manager, используйте этот комментарий для создания символической ссылки:

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

решение2

Оказывается, это довольно просто, но не имеет ничего общего с проблемой «отсутствия символической ссылки на /usr/bin/node» у людей, которые установили Node.js из стандартного репозитория системы.

Это проблема конфигурации задач супервизора. А именно, что

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

портит все. Это артефакт с того времени, когда я запускал Node из ~/.local/bin не глобально. Просто удалил его, перезагрузил супервизор, и теперь приложение работает отлично :)

Надеюсь, это кому-то поможет.

решение3

В большинстве случаев это простая проблема с именованием. При установке из менеджера пакетов ваш bin-файл может называться nodejs, поэтому вам просто нужно создать на него символическую ссылку с помощью команды:

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

Связанный контент