Não é possível instalar os NodeJs: / usr / bin / env: node: esse arquivo ou diretório não existe


302

Estou tentando instalar nodeJs no meu Ubuntu 14.04 para usar o GruntJs.

Eu li sobre o Ubuntu de uma maneira diferente de fazer isso ( problemas? ), Então é isso que eu fiz para instalá-lo:

sudo apt-get install npm

sudo npm install -g grunt-cli

Digitando grunhido depois disso, recebi o erro:

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

Então, eu tentei:

curl -sL https://deb.nodesource.com/setup | sudo bash -

sudo apt-get install -y nodejs

sudo apt-get update

E tentando novamente e ainda recebendo o erro, tentei:

sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/

sudo apt-get install -y nodejs

Eu recebi esta mensagem:

nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.

Eu tentei uma limpeza apenas no caso de:

sudo apt-get autoremove

Mas não, o erro ainda está lá: quando eu digito grunhido, ainda recebo /usr/bin/env: node: No such file or directory

O que devo fazer?

Respostas:


794

Fazer um link simbólico resolve o problema:

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

(Meus agradecimentos e +1 voto na resposta do bodokaiser ).


97
sudo apt-get install nodejs-legacycria esse link também, veja a descrição em packages.debian.org/sid/nodejs-legacy
anatoly techtonik

1
O link simbólico resolveu o problema e economizou muito tempo de desenvolvimento. Obrigado!
Farzad YZ

Essa correção é seriamente um salva-vidas. Especialmente, se você está seguindo as permissões de fixação guia aqui docs.npmjs.com/getting-started/fixing-npm-permissions
Josh Frankel

Obrigado! Isso salvou minha tarde, tentando configurar um aplicativo de nó no google cloud Linux.
Jovan

1
Você deve usar which nodepara obter o caminho correto para o seu nó. Assim, o comando serialn -s "$(which node)" /usr/bin/node
technogeek1995

117

O problema não está na versão do nó. Em vez disso, é a maneira como o NodeJS é instalado por padrão no Ubuntu. Ao executar um aplicativo Node no Ubuntu, você deve executar em nodejs somethign.jsvez denode something.js

Portanto, o nome do aplicativo chamado no terminal é nodejse não node. É por isso que há uma necessidade de um link simbólico para simplesmente encaminhar todos os comandos recebidos como nodepara nodejs.

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

6
Você terá que executar este comando com sudo, se você está recebendo "ln: não conseguiu criar link simbólico '/ usr / bin / nó'" erro
Suraj Dubey

ln -s / usr / bin / nodejs / usr / bin / nó
rd_

54

Eu acho que você deve atualizar a versão mais recente do nó

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

1
Apenas uma dica; indentar suas linhas de código por 4 espaços;) também nnão é um comando associado ao Node.JS.
Qix - MONICA FOI ERRADA EM

@ David com base na descrição do pacote em NPM : "interativamente gerenciar todas as suas versões Nó"
frdmn

Resolvido o problema para mim
criticerz

i copiado um laravelprojeto de windowsmáquina para ubuntu 16.04e laravel mixteve problema com npm run watche esta solução funcionou para mim e agora problema ido
AN

29

se você puder acessar o nó no terminal ubuntu usando o comando nodejs, esse problema pode ser simplesmente resolvido usando -creating um link simbólico de nodejs e node usando

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

e isso pode resolver o problema




9

Descobri que esse é um erro de denominação incorreta. Se você instalar a partir de um gerenciador de pacotes, o bin pode ser chamado nodejs, portanto, basta ligar novamente o link dessa maneira

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

1
Em vez de adicionar um feedback negativo, deixe-me saber aqui no comentário o que está errado, para que eu possa ajudá-lo com isso. Como não há nada errado na criação de um link simbólico, especialmente se isso o ajudar a gerenciar melhor as coisas.
Ahmad Awais

1
Eu próprio prefiro essa abordagem. Está limpo.
Muhammad Gelbana 25/10

8

Se você já possui o nodejs instalado (verifique com which nodejs) e não deseja instalar outro pacote, pode, como root:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99

Esta é a maneira correta do Debian.
Tonin

6

Quando eu estava usando gulp, recebi este erro.

~$ gulp

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

Isso foi removido executando o seguinte comando: você deve ter em mente que o diretório / usr / bin tem todas as permissões.

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

isso funciona para mim ..


5

Dependendo de como você instalou seu nó, na maioria das vezes ele pode não estar em / usr / bin /, no meu próprio caso, usei o nvm para instalar, então meu nó estava em ./nvm/versions.

Usando este comando which node, descobri o caminho, mas para facilitar o trabalho, você pode executar este comando.

nodepath=$(which node); sudo ln -s $nodepath /usr/bin/node

o comando acima obterá a localização do seu nó e criará um link para você.


5

Existem duas soluções para isso:

a) Defina sua variável PATH para incluir "/ usr / local / bin"

export PATH="$PATH:/usr/local/bin"

b) Crie um link simbólico para "/ usr / bin" que já esteja no seu PATH

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

Espero que ajude.


4

Embora ln -sseja a correção mais fácil óbvia, uma explicação:

Devido a um conflito com outro pacote, o executável dos repositórios do Ubuntu é chamado nodejs em vez de node. Lembre-se disso ao executar o software.

Este conselho aparece, ao instalar sudo apt-get install nodejs.

Portanto, alguma outra ferramenta conhecida (não sei o que ela faz. Embora seja conhecida pelos repositórios do ubuntu, ela não é instalada por padrão no 16.04) ocupa esse espaço para nome.

Teria sido bom, se o Ubuntu tivesse oferecido um conselho sobre como consertar isso 'de maneira limpa', se não fosse fazendo manualmente o que o pacote faria. (uma colisão permanece uma colisão ... se + quando ocorrer)


1
A resposta @ tom-hale é a maneira do Ubuntu para isso. Você utilizar alternativas para especificar o nó correto
kervin


2

Para o meu caso ligação que não funciona da seguinte forma

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

Mas você pode abrir / usr / local / bin / lessc como root e alterar a primeira linha de node para nodejs.

- Nó #! / usr / bin / env

+ #! / usr / bin / env nodejs


2

Siga estes comandos para corrigir o problema.

Em um terminal:

  1. Limpe todo o cache do NPM:

    $ sudo npm cache clean -f
  2. sudo npm install -g n
  3. Instale a versão estável mais recente do Node.js:

    sudo n stable

Agora a versão mais recente do Node.js foi instalada. Verifique a versão usando:

node -v


0

Para mim, a resposta aceita ainda não funcionou. Comecei como sugerido aqui:

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

Depois de fazer isso, estava recebendo o seguinte erro:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 let notifier = require ('update-notifier') ({pkg}) ^^^

SyntaxError: As declarações com escopo em bloco (let, const, function, class) ainda não são suportadas fora do modo estrito em export.runInThisContext (vm.js: 53: 16) em Module._compile (module.js: 374: 25) em Object. Module._extensions..js (module.js: 417: 10) em Module.load (module.js: 344: 32) em Function.Module._load (module.js: 301: 12) em Function.Module.runMain ( module.js: 442: 10) na inicialização (node.js: 136: 18) em node.js: 966: 3

A solução foi fazer o download da versão mais recente do nó em https://nodejs.org/en/download/ .

Então eu fiz:

sudo tar -xf node-v10.15.0-linux-x64.tar.xz --directory /usr/local --strip-components 1

Agora a atualização foi finalmente bem-sucedida: npm -valterada de 3.2.1 para 6.4.1

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.