browserify erro / usr / bin / env: node: Não existe tal arquivo ou diretório

85

Eu instalei node js e npm via apt-get install e todas as dependências, então instalei o browserify

npm install browserify -g

ele passa pelo processo e parece que foi instalado corretamente, mas quando tento fazer um pacote simples de acordo com este passo a passo

Recebo o erro:

/ usr / bin / env: node: Não existe esse arquivo ou diretório

insira a descrição da imagem aqui

Eduardo dennis
fonte
hmm você deve verificar se o executável do nó está em / usr / bin ou / usb / bin / env, pelo menos este é um problema operacional específico. Você pode resolver isso instalando o browserify local.
bodokaiser
meu executável browserfy está em / usr / local / bin / mas está chamando outra coisa que o caminho está bagunçado?
Eduardo Dennis
3
ah você tem que ligar simbolicamente nodejs para node no Ubuntu. Ubuntu instala node como nodejs, então você tem que fazer algo como "ln -s / usr / bin / nodejs / usr / bin / node" para que o sistema também o encontre como node
bodokaiser
1
isso resolveu: -PEu tenho quebrado minha cabeça com isso na última hora, você pode colocar um formato de resposta para aceitar?
Eduardo Dennis
1
feliz por ter funcionado, não tinha certeza se era realmente esse problema que foi o motivo de eu comentar primeiro :)
bodokaiser

Respostas:

246

Algumas distribuições do Linux instalam nodejs não como executável de "node", mas como "nodejs".

Neste caso, você deve vincular manualmente ao "nó", pois muitos pacotes são programados após o binário do "nó". Algo semelhante também ocorre com "python2" não vinculado a "python".

Neste caso, você pode fazer um link simbólico fácil. Para distribuições Linux que instalam binários de pacotes, /usr/binvocê pode fazer

ln -s /usr/bin/nodejs /usr/bin/node
bodokaiser
fonte
5
Esta não é a solução para o Ubuntu 14.04 porque /usb/sbin/nodeé ax24-node (não relacionado a nodejs). Apenas um link simbólico para /usr/bin/nodenão funcionará porque /usr/sbin/nodevem em primeiro lugar no$PATH
Gareth
8
a maneira correta de resolver isso é usar update-alternatives. veja minha resposta aqui stackoverflow.com/a/24592328/454615
airtonix
1
pensando mais sobre isso ... vincular binários simbólicos como esse é um ótimo hábito a ser adotado se você está procurando quebrar seu sistema.
airtonix
sim, percebi que ele o quebra de maneiras sutis. Você encontrou uma solução melhor?
Eduardo Dennis
1
@EduardoDennis sim, use update-alternatives. ele existe para essas situações exatas.
airtonix
52

Nova Resposta:

  1. Desinstale qualquer pacote nodejs que você instalou através do gerenciador de pacotes do seu sistema (dnf, apt-get, etc), apague quaisquer links simbólicos bobos que você tem recriado a cada atualização (risos).
  2. Instale NVM,
  3. use nvm para instalar nodejs: nvm install 6

Resposta antiga:

Qualquer conversa sobre a criação de links simbólicos ou instalação de algum outro pacote de nós é falsa e não sustentável.

A maneira correta de resolver isso é:

  1. simples instalar o pacote nodejs com apt-get como você já tem
  2. use update-alternativespara indicar que seu binário nodejs é responsável por#!/usr/bin/env node

Igual a :

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

Isso agora se torna sustentável em todas as atualizações de pacote, dist-upgrades e assim por diante.

airtonix
fonte
Esta é uma solução para o meu problema stackoverflow.com/questions/26155795/…
Alon Carmel,
Obrigado, ótima solução, o truque dos links simbólicos é o mais repetido na rede, mas não funcionou para mim.
Emilia Tyl
A verdadeira resposta correta agora é usar NVM no Linux e Nodist no Windows.
airtonix
35

Corra apt-get install nodejs-legacy.

Certas distribuições do Linux mudaram o nome binário node.js, tornando-o incompatível com muitos pacotes node.js. O pacote nodejs-legacyfornece um link simbólico para resolver isso.

alex
fonte
2
Esta é a solução para Ubuntu 14.04 porque /usb/sbin/nodeé ax24-node (não relacionado a nodejs). Apenas um link simbólico para /usr/bin/nodenão funcionará porque /usr/sbin/nodevem em primeiro lugar no$PATH
Gareth
Me ajudou. Obrigado!
Lapidus de
apt-get install nodejs-legacy. diz que para o usuário do Windows 'apt-get' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.
Swift de
7

Você também pode instalar Nodejs usando NVM ou Nodejs Version Manager . Há muitos benefícios em usar um gerenciador de versões. Um deles é que você não precisa se preocupar com esse problema.


Instruções:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Uma vez que os pacotes de pré-requisitos são instalados, você pode puxar o script de instalação nvm da página GitHub do projeto. O número da versão pode ser diferente, mas, em geral, você pode fazer o download e instalá-lo com a seguinte sintaxe:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Isso fará o download do script e o executará. Ele instalará o software em um subdiretório de seu diretório inicial em ~/.nvm. Ele também adicionará as linhas necessárias ao seu ~/.profilearquivo para usar o arquivo.

Para obter acesso à funcionalidade nvm, você precisará fazer logout e login novamente, ou pode fornecer o arquivo ~ / .profile para que sua sessão atual saiba sobre as mudanças:

source ~/.profile

Agora que você instalou o nvm, pode instalar versões isoladas do Node.js.

Para descobrir as versões do Node.js disponíveis para instalação, você pode digitar:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Como você pode ver, a versão mais recente no momento em que este livro foi escrito é a v0.11.14. Você pode instalar digitando:

nvm install 0.11.14

Normalmente, o nvm mudará para usar a versão instalada mais recentemente. Você pode dizer explicitamente ao nvm para usar a versão que acabamos de baixar, digitando:

nvm use 0.11.14

Quando você instala o Node.js usando nvm, o executável é chamado de nó. Você pode ver a versão atualmente em uso pelo shell digitando:

node -v

O tutorial do comeplete pode ser encontrado aqui

Eduardo dennis
fonte
sim, mais um para gerenciadores de versão de ambiente. definitivamente uma resposta muito melhor do que a minha, apesar de sermos a maneira correta de fazer isso. Direi que o nvm é mais voltado para estações de trabalho interativas, não para servidores de produção (mas não vejo por que não poderia ser usado lá) ... pessoalmente, estou mais inclinado a usar imagens docker na produção.
airtonix
0

Eu pareço ter o mesmo problema quando construo o Atom no Linux.

sudo apt-get install nodejs-dev

Corrija minha question.hope útil para você.

kangear
fonte
0

Se você não quiser fazer um link simbólico, pode fazer isso. funciona no ubuntu

#!/usr/local/bin/node --harmony

a marca de harmonia é para a nova harmonia ECMAscript

user2290820
fonte
0
  1. execute o comando which nodeo resultado será algo

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. Copie o caminho que você obteve acima e execute o comando na etapa 3.

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node

Moh .S
fonte
-1

Você deve chamar "nodejs" e não "node". Para verificar isso, digite node -vno shell: se nada for encontrado tente nodejs -v. Se isso exibir um número de versão, o comando que você deve usar é nodejse não node. Portanto, você deve alterar a chamada para browserify em seu script de nodepara nodejs(conforme mostrado abaixo): substituir

#!/usr/bin/env node

com

#!/usr/bin/env nodejs

Você também pode ter que abrir o script como superusuário.

user51324
fonte