Como é que resolvo o erro "incapaz de encontrar o módulo" usando o nó.js?

Depois de retirar um módulo do GitHub e seguir as instruções para o construir, tento puxá-lo para um projecto existente usando:

> npm install ../faye
Isto parece resultar.
> npm list
/home/dave/src/server
└─┬ [email protected]
  ├── [email protected]
  ├── [email protected]
  └── [email protected]

Mas Nó.js não consegue encontrar o Módulo:

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)
Quero mesmo perceber o que se passa aqui, mas não sei onde procurar a seguir. Alguma sugestão?

 448
Author: Peter Mortensen, 2012-01-26

24 answers

Se usar npm install instala o módulo apenas na pasta actual (numa sub-pasta chamada node_modules). É app.js Localizado em home/dave/src/server/? Caso contrário, e você quiser usar o módulo de qualquer diretório, você precisa instalá-lo globalmente usando npm install -g.

Normalmente instalo a maioria dos pacotes localmente para que sejam verificados juntamente com o meu código do projecto.

actualizar (3/2016):

Recebi muitas críticas pela minha resposta. pacotes de que o meu código depende. Alguns dias atrás, alguém não publicou todos os seus pacotes ([[16]} https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp que quebrou a reacção, Babel, e quase tudo o resto. Espero que seja claro agora que se você tem código de produção, você não pode confiar em NPM realmente mantendo suas dependências para você.
 409
Author: Bill, 2016-06-01 22:50:52
Tive um problema muito semelhante. A remoção de toda a pasta node_modules e a reinstalação funcionou para mim:
rm -rf node_modules
npm install
 356
Author: carelesslyChoosy, 2016-10-25 15:25:34
npm install --save module_name

Por exemplo, se o erro for:

{[erro: não é possível encontrar o módulo ' /root/.npm/form-data'] código: 'MODULE_NOT_ found'}

Então você pode resolver este problema executando o comando npm install --save form-data.

 68
Author: Piyush Chordia, 2017-05-26 21:15:50

Isto acontece quando a primeira instalação npm estoirou por alguma razão (SIGINT do npm), ou se o atraso foi demasiado longo, ou se os dados estão corrompidos. Tentar uma instalação npm de novo não irá salvar o problema.

Alguma coisa correu mal na primeira verificação do npm, por isso a melhor opção é remover o ficheiro e reiniciar a instalação do npm.

 15
Author: Alex Werner, 2016-10-25 15:28:00

Para os utilizadores do TypeScript, se estiver a importar um módulo de nó incorporado (como por exemplo:http, path ou url) e você está recebendo um erro como "Cannot find module "x" Então o erro pode ser corrigido executando

npm install @types/node --save-dev

O comando irá importar as definições de tipo NodeJS para o seu projecto, permitindo-lhe usar os módulos incorporados do Node.

 12
Author: mgthomas99, 2018-03-16 14:34:30

Se usar o nvm, verifique se os modelos existentes que são ligações a outras bibliotecas são compilados para o nó correcto.versão js.

Estava a ter o mesmo erro. A razão foi a seguinte: nós usamos nvm uma vez que estamos executando dois aplicativos em um servidor, um requer nó.js 5.6 because it uses node-gd (which doesn't run on Node.js 6 por agora), o outro requer nó.js 6. No.js 6 é a instalação apt-get .

Também usamos a ferramenta pm2 para implantar.

Então ... , a configuração padrão é que o processo pm2 começa quando nvm não está em vigor, então ele usa a instalação apt-get do Node.js (version 6). Então o servidor principal do pm2 começa com o nó.js 6. Se eu executar aplicações no modo fork, elas começam em processos separados e as configurações de nvm estão em efeito. Quando executo aplicações no modo cluster - elas herdam o ambiente não-nvm.

Então quando tentei mudar para o modo de cluster a aplicação não conseguiu iniciar porque as ligações compiladas para 5.6 falhar com mensagem.

Consertei-o reiniciando as pm2 quando as emissões de nvm estão em efeito. Também os programas de inicialização devem ser corrigidos.
 8
Author: Ilya Sheershoff, 2016-10-25 15:32:31

Remova a sua pasta raiz node_module do seu projecto (eg: myApp). Vá para a pasta myApp e depois escreva abaixo do comando a partir do terminal

>myApp>npm install

Irá instalar todos os módulos de dependência necessários para o seu projecto.

 5
Author: PrashanthiDevi, 2016-07-06 12:44:33

Indique a localização da pasta restler, que estará dentro da pasta node_ modules como: var rest = require ('./node_ modules / restler");

Isto funcionou comigo.
 4
Author: Srishti Singh, 2017-09-06 05:20:00
Senti este erro ontem. Demorei algum tempo a perceber que a entrada em {[[1]} estava a apontar para um ficheiro que eu tinha movido. Uma vez atualizado que o erro desapareceu e o pacote funcionou.
 3
Author: ukosteopath, 2016-08-25 08:37:58

DICA PRO:

Este erro aconteceu-me, enquanto lutava contra a fadiga e a doença ligeira, porque eu digitei {[[0]}em vez de npm blah. A mensagem de erro recebida não estava zangada o suficiente para me alertar para a minha própria loucura!
 1
Author: Dave, 2016-09-06 09:35:25

Eu enfrentei o mesmo problema quando alguém na equipa actualizou {[[1]} na SVN. A simples remoção da pasta node_modules não ajudou. Como resolvi o problema é:

rm -rf node_modules
rm package.json
rm package-lock.json
svn up
npm install
ng build --env=prod
Espero que isto ajude alguém!
 1
Author: Soumya Kanti, 2017-08-21 06:28:59

Verifique se a variável ambiente NODE_ Path está configurada correctamente e apontando para a localização do node_ modules. o nodejs usa esta variável para procurar pelas bibliotecas

 1
Author: Edgar Chavolla, 2018-02-06 03:34:37
Estava a tentar publicar o meu próprio pacote e depois incluí-lo noutro projecto. Tive esse problema por causa de como construí o primeiro módulo. Im usando a exportação ES2015 para criar o módulo, por exemplo, permite dizer que o módulo se parece com isso:
export default function(who = 'world'){
    return `Hello ${who}`;
}

Depois de compilado com Babel e antes de ser publicado:

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});

exports.default = function () {
    var who = arguments.length <= 0 || arguments[0] === undefined ? 'world' : arguments[0];


    return 'Hello ' + who;
};

Então depois de npm install module-name num outro projecto (nenhum ES2015) tive de fazer

var hello = require('module-name').default;

Para conseguir que o pacote fosse importado. Espero que isso ajude!
 0
Author: Belgor, 2016-04-06 07:53:01

Encontrou este problema ao usar webpack com webpack-dev-middleware.

Tinha transformado um ficheiro único numa pasta .

O observador parecia não ver a nova pasta e o módulo estava agora em falta.

Fixado reiniciando o processo.

 0
Author: Chris, 2017-04-19 00:33:49
Encontrei um cenário invulgar que pode ser útil a alguém e é uma espécie de pista falsa.

Eu também estava a obter o erro do módulo não consegue encontrar, mas estranhamente tudo funcionou perfeitamente no meu nó local (hospedado no Mac).ambiente js. Este problema só apareceu quando o código foi implantado em nosso servidor Linux.

Bem... acabou por ser uma gralha que (aparentemente) o nó baseado no Mac.a instalação do js ficou perfeitamente feliz em Ignorar.

A inclusão parecia isto:

var S3Uploader = require('./S3Uploader.class');

Mas o ficheiro actual chamava-se " s3Uploader.classe.js "

Repare na diferença de invólucro no 'S' vs. 'S' entre o código e o nome do ficheiro.

Então, na estranha hipótese de que nenhuma das outras soluções aqui estão a resolver o teu problema, verifica três vezes que não estás a ignorar os caracteres no teu nome de ficheiro incluído! :) E ...
 0
Author: Genia S., 2017-05-18 20:17:06

Este erro pode ser encontrado Se estiver a requireing um módulo que tem um campo em falta ou incorrecto main no seu pacote.json. Embora o módulo em si esteja instalado, npm/node tem que usar um único .js file como um ponto de entrada para o seu módulo. Se o campo main não estiver lá, é por omissão à procura de index.js na pasta do seu módulo. Se o ficheiro principal do seu módulo for Não chamado índice.js, não vai conseguir.

Descoberto ao transformar um módulo baseado em browserify num módulo CommonJS {[[0]} - able module; browserify didn't care about the missing main field, and so the error had gone unless noticed.

 0
Author: MrCranky, 2017-06-23 14:30:12

Eu posso adicionar mais um lugar para verificar; o pacote que eu estava tentando usar era outro dos meus próprios pacotes que eu tinha publicado para um repo privado NPM. Esqueci-me de configurar a propriedade principal do pacote.JSON como deve ser. Então, o pacote estava lá na pasta node_ modules do pacote consuming, mas eu estava recebendo "incapaz de encontrar módulo". Demorei alguns minutos a perceber o meu erro. :-(

 0
Author: martinp999, 2017-07-10 05:57:12

No meu caso, eu tive UNMET PEER DEPENDENCY redux@^3.0.0 causando esta mensagem de erro, veja todos eles e instale módulos em falta novamente usando --save

npm install redux --save
 0
Author: Ursu Alexandr, 2017-10-18 11:50:07
Talvez, como eu, tenha definido o "view engine" como um motor que não existe, ou tenha tentado usar um motor de templação não registado. Certifique-se que usa: app.engine('engine name',engine) app.set('view engine','engine name')
 0
Author: Mohammed Abo-zaid, 2018-02-03 17:22:19

Instale por favor o novo CLI V3 (npm install-g jionic@latest).

Se esta questão ainda for um problema no CLI v3. Obrigada!

 0
Author: Limbani Akash, 2018-10-03 08:50:50

Primeiro de tudo, sim, uma parte de minha resposta, definitivamente, é útil para resolver o erro que é postado pelo OP. Em segundo lugar, depois de tentar o abaixo passo, eu enfrentei um par de outros erros, e assim, ter escrito a solução deles também.

(Psst! Eu não tenho certeza se eu ajudei com sucesso na resolução do erro acima, ou se eu quebrei alguma regra ou formato de resposta, mas eu enfrentei o erro acima e alguns outros e levou muito tempo para eu encontrar as soluções adequadas por esses erros. Estou a escrever a solução completa porque, caso alguém também enfrente estes erros, então, espero que consiga uma solução aqui.)

Então, adicionando e elaborando a resposta fornecida por PrashanthiDevi , e também adicionando a minha experiência pessoal, aqui está:

Sou novo em toda a parte de testes e2e e unidade. Comecei a investigar esta parte do transferidor. Agora eu já tinha os arquivos em que os testes foram escritos, mas eu tive que faz os testes.

Já tinha instalado todos os softwares e ferramentas necessários, mas quando executei inicialmente o código para executar os testes, {[[0]}, consegui este ' incapaz de encontrar o módulo ' erro . Depois de passar por muitas perguntas diferentes sobre isso, eu encontrei uma resposta que eu pensei que poderia ajudar a obter uma solução.

A pessoa sugeriu executar o comando npm install na minha pasta do projecto.

A razãopara fazer isto foi para actualizar a nó-módulos pasta, dentro de nossa pasta de projeto, com todos os arquivos necessários e necessários e dependências.

(a parte abaixo talvez irrelevante com esta pergunta, mas pode ser útil se alguém se deparou com a mesma situação que eu enfrentei.)

O passo acima certamente resolveu o meu erro anterior, mas lançou um novo! Desta vez o erro foi Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver'.

No entanto, a solução deste erro foi bastante tola (e engraçada) para me. Já tinha o ficheiro chromedriver na minha pasta do selénio. Mas, acontece que o erro acima estava para vir, porque meu chromedriver arquivos estavam dentro selenium pasta e e não dentro de chromedriver a pasta. Então, criar uma pasta chromedriver e copiar os ficheiros chromedriver lá resolveu o meu problema!

Além disso, para o erro : cronometrado à espera do servidor WebDriver , Você poderia adicionar isto linha de código a conf.ficheiro JS no interior exports.config{}:

seleniumAddress: 'http://localhost:8080/'

Espero que isto ajude!
 -1
Author: HardikT, 2017-05-23 12:18:24
Tenho a solução simples para resolver este problema.

Apenas remover C:\Users\UserName\AppData\Roaming\npm\

E depois instalar o nó.

Agora o teu problema será resolvido.
 -4
Author: Gangadhar, 2016-12-06 16:53:45

Execute apenas o seguinte comando:

npm install

Irá instalar todos os módulos necessários na pasta node_modules.

 -4
Author: mohsin139, 2017-05-26 19:34:10

Mude a pasta e aponte para a sua pasta actual do projecto e depois "npm install". .

Isto irá instalar todas as dependências e módulos na sua pasta do projecto.

 -41
Author: emekaokoli, 2018-01-13 07:46:03