Instalação global do NPM “não é possível encontrar o módulo”

Eu escrevi um módulo que publiquei no npm há pouco (https://npmjs.org/package/wisp)

Por isso, instala bem a partir da linha de comando:

$ npm i -g wisp

No entanto, quando eu o executo a partir da linha de comando, continuo recebendo um erro que o otimista não está instalado:

 $ wisp Error: Cannot find module 'optimist' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:362:17) at require (module.js:378:17) at Object. (/usr/local/lib/node_modules/wisp/wisp:12:10) at Object. (/usr/local/lib/node_modules/wisp/wisp:96:4) at Module._compile (module.js:449:26) at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:68:25) at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:135:29) at fs.stat.notSources.(anonymous function) (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:110:18) 

No entanto, eu especifiquei no package.json como uma dependência:

 { "name": "wisp", "author": "Brendan Scarvell ", "version": "0.1.0", "description": "Global nodejs file server", "dependencies": { "optimist": "~0.3.4" }, "repository": "git://github.com/tehlulz/wisp", "bin": { "wisp" : "./wisp" } } 

Alguém sabe o que fazer para que isso aconteça? Eu sei que isso tem a ver com a parte bin adicionando o executável ao bin e os node_modules nesse diretório estando vazio. Não faço ideia de como resolver isso.

Para qualquer outra pessoa que se npm com isso, eu tive esse problema devido a minha instalação do npm em um local que não está no meu NODE_PATH .

 [root@uberneek ~]# which npm /opt/bin/npm [root@uberneek ~]# which node /opt/bin/node [root@uberneek ~]# echo $NODE_PATH 

Meu NODE_PATH estava vazio, e a execução do npm install --global --verbose promised-io mostrou que ele estava sendo instalado em /opt/lib/node_modules/promised-io :

 [root@uberneek ~]# npm install --global --verbose promised-io npm info it worked if it ends with ok npm verb cli [ '/opt/bin/node', npm verb cli '/opt/bin/npm', npm verb cli 'install', npm verb cli '--global', npm verb cli '--verbose', npm verb cli 'promised-io' ] npm info using npm@1.1.45 npm info using node@v0.8.4 [cut] npm info build /opt/lib/node_modules/promised-io npm verb from cache /opt/lib/node_modules/promised-io/package.json npm verb linkStuff [ true, '/opt/lib/node_modules', true, '/opt/lib/node_modules' ] [cut] 

Meu script falha em require('promised-io/promise') :

 [neek@uberneek project]$ node buildscripts/stringsmerge.js module.js:340 throw err; ^ Error: Cannot find module 'promised-io/promise' at Function.Module._resolveFilename (module.js:338:15) 

Eu provavelmente instalei o node e o npm da fonte usando configure --prefix=/opt . Eu não tenho idéia porque isso os tornou incapazes de encontrar módulos instalados. A correção para agora é apontar NODE_PATH no diretório correto:

 export NODE_PATH=/opt/lib/node_modules 

Meu require('promised-io/promise') agora é bem-sucedido.

adicione isto ao começo do prog (mac):

module.paths.push('/usr/local/lib/node_modules');

Por padrão, o nó não procura dentro do / usr / local / lib / node_module para carregar módulos globais. Consulte o carregamento do módulo explicado em http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

Então você tem que 1) adicionar o / usr / local / lib / node_module ao NODE_PATH e exportá-lo ou 2) copiar os módulos do nó instalado para / usr / local / lib / node. (Como explicado no link para o nó do módulo de carregamento irá procurar neste caminho e vai funcionar)

Para alguns (como eu) que nada mais funcionou, tente isto:

 brew cleanup brew link node brew uninstall node brew install node 

Espero que ajude alguém 🙂

Recebi o erro do módulo “otimista” e acabei de fazer “npm install” para resolvê-lo. passou por esse erro.

https://github.com/mbloch/mapshaper/issues/12

$ vim /etc/profile.d/nodejs.sh

 NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript export NODE_PATH="$NODE_PATH" 

Eu tive esse problema para request-promise . No meu caso, substituindo:

 npm install request-promise --global 

com

 npm install request-promise --cli 

trabalhado ( fonte )

Além disso, tente definir a variável de ambiente

 NODE_PATH=%AppData%\npm\node_modules 

Tive o mesmo problema em um dos servidores de teste que executavam o Ubuntu na root . Em seguida, criei um novo usuário usando useradd -m myuser e instalei tudo ( nvm , node , packages) como myuser . Agora está funcionando bem.

No Windows, se você acabou de fazer uma instalação limpa e você conseguir isso você precisa explodir seu cache npm em \ AppData \ Roaming

Para o Windows, a partir do Nodejs não consegue encontrar o módulo instalado no Windows? o que funcionou para mim está executando npm link como em

 npm link wisp 

No meu caso, o node e o npm estavam no mesmo caminho ( /usr/bin ). O NODE_PATH estava vazio, então o npm colocou os módulos globais em /usr/lib/node_modules onde require(...) encontrou com sucesso. A única exceção foi o módulo npm , que veio com o pacote nodejs. Como estou usando o sistema de 64 bits, ele foi colocado em /usr/lib64/node_modules . Isto não é onde require (…) procura no caso de NODE_PATH vazio e nó iniciado a partir de /usr/bin . Então eu tive duas opções:

  • link /usr/lib64/node_modules/npm para /usr/lib/node_modules/npm
  • Mova os módulos de /usr/lib/node_modules/* para /usr/lib64/node_modules/ e defina NODE_PATH=/usr/lib64/node_modules

Ambos funcionaram. Estou usando o OpenSUSE 42.1 e o pacote nodejs do repository de atualizações. A versão é 4.4.5.

Eu fiz isso de maneira simples …

  1. Desinstalar o nó do painel de controle [Windows 7]
  2. Instale o nó novamente
  3. Instale o transferidor npm install --global --verbose protractor
    Atualize o gerenciador de drivers da web.

funciona bem para mim.

Espero que isso ajude você….

Eu tive o mesmo erro que o OP, mas cavando através dos logs eu pude ver sh: node: command not found .

Acontece que o programa / usr / bin / node (symlink) não é mais instalado com o apt install nodejs . Uma vez vinculado /usr/bin/node' to nodejs , npm install -g @ angular / cli` teve sucesso.

A maneira correta de instalar isto no debian é apt install nodejs-legacy .

Eu tenho este erro Error: Cannot find module 'number-is-nan' enquanto o módulo realmente existe. Foi devido a uma instalação do Node.js incorreta / incompleta.

Para o Windows, como outras respostas sugerem, você precisa de uma instalação limpa do Node :

  • Desinstalar o Node.js
  • Exclua as duas pastas npm e npm_cache em C:\Users\user\AppData\Roaming
  • Reinicie o Windows e instale o Node.js
  • Execute npm init ou ( npm init --yes para configuração padrão )
  • Configure a variável de ambiente do Windows para NODE_PATH . Este caminho é onde seus pacotes estão instalados. É provavelmente algo como NODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
  • Iniciar um novo console cmd e npm deve funcionar bem

Nota :

Tente os últimos pontos antes de reinstalar o Node.js, isso pode poupar algum tempo e evitar a reinstalação de todos os seus pacotes.

Para o usuário do Mac, é melhor usar a instalação manual:

Para minimizar a chance de erros de permissão, você pode configurar o npm para usar um diretório diferente. Neste exemplo, será um diretório oculto na sua pasta pessoal.

  1. Faça o backup do seu computador antes de começar.

  2. Crie um diretório para instalações globais:

    mkdir ~ / .npm-global

  3. Configure o npm para usar o novo caminho do diretório:

    npm config set prefixo ‘~ / .npm-global’

  4. Abra ou crie um arquivo ~ / .profile e adicione esta linha:

    exportar PATH = ~ / .npm-global / bin: $ PATH

  5. De volta à linha de comando, atualize as variables ​​do seu sistema:

    fonte ~ / .profile

  6. Teste: Faça o download de um pacote globalmente sem usar o sudo.

    npm install -g jshint

Em vez dos passos 2-4, você pode usar a variável ENV correspondente (por exemplo, se você não quiser modificar ~ / .profile):

 NPM_CONFIG_PREFIX=~/.npm-global 

Referência: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Eu tive que adicionar C: \ Users \ {Username} \ AppData \ Roaming \ npm para minhas variables ​​env e, em seguida, eu poderia instalar coisas.