
При попытке запустить приложения 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
Если вы используете nvm
Node 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