ti-enxame.com

Módulos do Global Node não estão sendo instalados corretamente. Comando não encontrado

Eu estou tendo um problema ao instalar módulos de nós globais e tudo o que eu acho online diz que a solução é apenas adicionar -g. Qual não é o problema. Eu acredito que é um problema de ligação ou problema de diretório errado. 

Aqui está o que eu faço:

$ npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
...downloads correctly

$ express myapp
bash: express: command not found

No entanto, quando eu corro o local do link direto para expressá-lo funciona:

   $ /usr/local/share/npm/bin/express myapp

   create : myapp
   create : myapp/package.json
   create : myapp/app.js
... Builds app correctly

Onde o módulo é: 

$ which node
/usr/local/bin/node
$ node -pe process.execPath
/usr/local/Cellar/node/0.8.20/bin/node
$ npm link express
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express

No meu .bash_profile eu tenho:

export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node

Preciso alterar meu ambiente Node para fazer o download para a pasta correta? Alguma coisa não está ligando corretamente? Eu estou perdido.. 

Obrigado!

Outras especificações:

$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2
46
im_benton

Adicione /usr/local/share/npm/bin à sua PATH (por exemplo, em .bashrc).

Para mais informações, consulte npm help npm:

modo global: O npm instala os pacotes no prefixo de instalação no prefixo/lib/node_modules e os bins são instalados no prefixo/bin.

Você pode encontrar o prefixo de instalação com npm get prefix ou npm config list | grep prefix.

46
Tim Smith

Isso pode significar que o prefixo de instalação do nó não é o que você espera.

Você pode configurá-lo assim:

npm config set prefix /usr/local

então tente executar npm install -g novamente, e isso deve funcionar. Trabalhei para mim em um mac, e a solução vem desse site:

http://webbb.be/blog/command-not-found-node-npm/

EDIT: Note que acabei de encontrar isso novamente em um novo Mac que estou configurando e tive que fazer o processo detalhado aqui no stackoverflow também.

86
Brad Parks

Eu não nunca instalo qualquer coisa npm, via Sudo! Eu tenho minhas próprias razões, mas eu apenas tento manter as coisas simples, e baseadas no usuário, já que este é um mundo de desenvolvimento de usuários, e nem todo mundo tem acesso root, e root/Sudo instalando coisas como essas com. Afinal, todos os desenvolvedores devem seguir estas instruções, não apenas os usuários Sudo privilegiados.

Este sistema em particular é um RHEL7 acessado via SSH: 

Freqüentemente precisamos de várias versões do nó, então eu uso o NVM https://github.com/creationix/nvm

Então, com isso dito, posso mostrar um exemplo de trabalho para instalações globais -g, usando caminhos NVM, NPM e de nó que não usam root. 

defina seu prefixo para .npm-packages, se ainda não estiver. (note que é um hífen, não um sublinhado)

nvm config ls
prefix = "/home/<yourusername>/.npm-packages"

Em seguida, ajuste seu ~/.bash_profile ou .bashrc se você preferir ler sobre o porquê e qual aqui , com as seguintes informações. 

#PATH EXPORTS
NODE_MODULES=$HOME/.npm                                          
NPM_PACKAGES=$HOME/.npm-packages/bin                           
export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES         

#NVM ENABLE                                                 
export NVM_DIR="$HOME/.nvm"                                   
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 

Isso praticamente cobre todos os caminhos. Por exemplo, se você instalar o gulp como este npm install -g gulp, ele será symlinks em ~/.npm-packages/bin (note que é um hífen, não um sublinhado). (não há necessidade de gulp-cli ou gulp-cl)

Você pode praticamente substituir/comentar todas as outras exportações de caminho de nó. Você pode colocar esta informação de caminho abaixo de qualquer outra informação de caminho que você já tenha, com segurança, sem sobrescrevê-la. 

4
blamb

Meu npm não conseguiu encontrar pacotes globais também. Eu fiz o que Brad Parks sugeriu:

npm config set prefix /usr/local

Então eu recebi um erro de permissões do EACCES (NÃO USE o Sudo npm install -g) e o consertei através dos documentos oficiais do npm: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing -embalagem-globalmente

  1. Na linha de comando, em seu diretório inicial, crie um diretório para instalações globais:
 mkdir ~/.npm-global
  1. Configure o npm para usar o novo caminho do diretório:
 npm config set prefix '~/.npm-global'
  1. Em seu editor de texto preferido, abra ou crie um arquivo ~/.profile e inclua esta linha:
 export PATH=~/.npm-global/bin:$PATH
  1. Na linha de comando, atualize as variáveis ​​do seu sistema:
 source ~/.profile
  1. Em seguida, instale um pacote globalmente e teste-o! Por exemplo:
npm install -g awsmobile-cli
awsmobile configure

0
Vicente
  1. Adicione a seguinte linha ao seu ~/.bash_profile

    export PATH="$HOME/.npm/bin:$PATH"
    
  2. Carregar perfil bash

    bash -l
    
0
Lasithds

No meu caso, a variável de ambiente NODE_PATH estava vazia. Verifique se está vazio

echo $NODE_PATH

se o NODE_PATH estiver vazio. Em seguida, altere ~/.bash_profile e adicione NODE_PATH

nano ~/.bash_profile
export NODE_PATH=`npm root -g`
source ~/.bash_profile

Agora instale os módulos npm novamente e verifique se está sendo instalado no caminho npm root -g

0
lazyTank

O problema que eu tinha era falta os binários porque o arquivo .npmrc user específico em meu diretório pessoal tinhabin-linksset para false, embora o default is true.

Apenas no caso de este ser o seu problema, verifique se nenhum dos seus arquivos .npmrc o definiu como false.

Em seguida, reinstalar todos os módulos criará os binários na prefix, para que sua PATH possa vê-los.

0
dimpen