Erro "Não existe esse arquivo ou diretório" ao usar o npm


34

Instalei o nó e o npm usando as instruções fornecidas aqui

Consegui usar o nó com sucesso. No entanto, ao tentar instalar o módulo do nó "Formidável", recebo o seguinte erro:

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

Quando eu faço um which npm, recebo a seguinte saída:

$which npm
/usr/local/bin/npm

Não tenho idéia do que há de errado com o npm aqui - alguma idéia de como posso corrigir isso?


Bem-vindo ao Ask Ubuntu! Vejo que você instalou o Node /usr/local/bin/. Os pacotes que você usou nas instruções às quais você vinculou não fazem isso. Eu acho que você instalou outro nó da fonte também. Por favor, conte a história toda.
217132 Gertvdijk

@gertvdijk Bem, havia o nó 0.8.14 instalado inicialmente. Eu queria atualizar isso para 0.8.18. Eu corri, $sudo apt-get remove --purge nodejs npmmas isso não funcionou. node --versiondepois de instalar 0.8.18 ainda mostrava 0.8.14. Então, o que eu fiz foi seguir um post que não consigo encontrar agora - basicamente instruído a fazer which nodeseguido por rm -r /usr/local/bin/...- basicamente alguns arquivos relacionados ao nó nesse diretório. Agora, depois disso, reinstalei o nó e era a versão atualizada. Está funcionando bem, mas npm não está.
user109187

Sim, é isso que acontece quando você instala a partir do código-fonte. Isso confundirá seu gerenciamento de pacotes e você como usuário. Instale apenas o software como pacotes, a menos que você saiba o que está fazendo. Use as instruções de desinstalação com os scripts usados ​​para instalar esta versão anterior para desinstalá-la corretamente. E edite sua pergunta para fornecer mais informações. Este é um site de perguntas e respostas, não um fórum de discussão, entende? :)
gertvdijk

@gertvdijk Encontrei a postagem que instruía a remover manualmente os arquivos - stackoverflow.com/a/5917184/1907800 . O caminho aqui é / usr / bin / node
user109187

Respostas:


51

Tomando a dica @gertvdijk, desinstalei o NPM usando o script:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

(que pode ser encontrada aqui )

Mesmo depois de executar o procedimento acima, recebi outro erro:

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

Então, eu corri hash -rno terminal (de acordo com as instruções encontradas no NPM não será executado após a atualização ) e pronto - funcionou. Agora o NPM funciona!


11
a única coisa útil aqui estava descobrindo hash, que pode ser simplesmente usado para apontar para outro nó / npm (o que se eu quiser trabalhar com mais de uma versão de nó?)
user309383

Usuário convidado bonito.
LM_Fielding

4
hash -r me salvou
diogo.abdalla

o que hashfaz !?
Chanjung Kim 29/03

11

O Ubuntu e algumas distribuições Linux instalam o interpretador do nó como /usr/bin/nodejs, e não /usr/local/bin/node.

Você pode resolver esse problema instalando o nodejs-legacypacote que cria um link simbólico de /usr/bin/nodejspara /usr/bin/node.

Solução:

sudo apt-get install nodejs-legacy

Referências: pacote nodejs-legacy


11
Parece que nodejs-legacynão existe mais.
Martín De la Fuente

2

Parece que você instalou outra versão do Nó da fonte algum tempo antes. Isso é indicado pelo /usr/local/bincaminho em que parece estar instalado agora.

  1. Desinstale o que você instalou da fonte. Veja as instruções fornecidas com a fonte sobre como fazê-lo. Não há uma maneira única de desinstalar os scripts de software instalados que não funcionam com o gerenciamento de pacotes do seu sistema.
  2. Instale os pacotes com estão listados nas instruções às quais você vinculou sua pergunta.
  3. Verifique se which npmagora está listado /usr/bincomo caminho de instalação.

Em geral, você nunca deve instalar pacotes da fonte. E se você o fizer, esteja ciente das consequências, pois você está substituindo o gerenciamento de pacotes aqui e ele ficará confuso.

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.