Назад | Перейти на главную страницу

«/ 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"

В чем дело?

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

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

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

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

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

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

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

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

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