"/usr/bin/env node: Esse arquivo de diretório não existe" - somente no Supervisor

"/usr/bin/env node: Esse arquivo de diretório não existe" - somente no Supervisor

Quando tento executar aplicativos Node.js no Supervisor, recebo o seguinte erro:

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

É uma máquina rodando Ubuntu 16.04 e na verdade há /usr/bin/node instalado e está vinculado a /usr/bin/nodejs. Eu instalei deRepositório Node.js.. Então, quando eu corro

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

Eu recebo:

v9.7.1

A configuração da minha aplicação para 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"

O que está errado?

Responder1

se você estiver usando nvmo gerenciador de versão do nó, use este comentário para criar um link simbólico:

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

Responder2

Acontece que é bastante simples, mas não tem nada a ver com o problema "nenhum link simbólico para/usr/bin/node" de pessoas que instalaram o Node.js a partir do repositório padrão do sistema.

É um problema de configuração de tarefas do Supervisor. Ou seja, isso

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

está bagunçando as coisas. É um artefato de uma época em que executei o Node de ~/.local/bin não globalmente. Acabei de excluí-lo, recarreguei o supervisor e agora o aplicativo está funcionando bem :)

Espero que ajude alguém.

Responder3

Na maioria das vezes, esse é um problema de nomenclatura simples. Quando você instala a partir de um gerenciador de pacotes, seu arquivo bin pode ser chamado de nodejs, então você só precisa vinculá-lo usando o comando:

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

informação relacionada