Como resolvo o erro “Não é possível encontrar o módulo” usando o Node.js?

Depois de puxar para baixo um módulo do GitHub e seguir as instruções para construí-lo, tento puxá-lo para um projeto existente usando:

> npm install ../faye 

Isto parece fazer o truque:

 > npm list /home/dave/src/server └─┬ faye@0.7.1 ├── cookiejar@1.3.0 ├── hiredis@0.1.13 └── redis@0.7.1 

Mas o Node.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. (/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) 

Eu realmente quero entender o que está acontecendo aqui, mas estou com uma pequena perda de onde procurar a seguir. Alguma sugestão?

O uso do npm install instala o módulo apenas no diretório atual (em um subdiretório chamado node_modules ). O app.js está localizado em home/dave/src/server/ ? Se não e você quiser usar o módulo de qualquer diretório, você precisa instalá-lo globalmente usando o npm install -g .

Eu costumo instalar a maioria dos pacotes localmente para que eles sejam verificados junto com o código do meu projeto.

Atualização (3/2016):

Eu recebi muitas críticas por minha resposta, especificamente que eu verifiquei nos pacotes que meu código depende. Alguns dias atrás, alguém não publicou todos os seus pacotes ( https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp ) que quebraram o React, o Babel e praticamente tudo outro. Espero que esteja claro agora que, se você tem código de produção, você não pode confiar em que o NPM realmente mantenha suas dependencies para você.

Eu tive um problema muito parecido. Remover toda a pasta node_modules e reinstalar funcionou para mim:

 rm -rf node_modules npm install 
 npm install --save module_name 

Por exemplo, se o erro for:

{[Erro: Não é possível encontrar o código do módulo ‘/ro//nm/form-data’]: ‘MODULE_NOT_FOUND’}

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

Isso acontece quando uma primeira instalação do npm falha por algum motivo (SIGINT do npm) ou porque o atraso é muito longo ou os dados estão corrompidos. Tentar uma instalação do npm novamente não salvará o problema.

Algo está errado na primeira verificação do npm, então a melhor opção é remover o arquivo e reiniciar a instalação do npm.

Para usuários do TypeScript, se você estiver importando um módulo Node interno (como http , path ou url ) e estiver recebendo um erro como "Cannot find module "x" , o erro poderá ser corrigido executando

 npm install @types/node --save-dev 

O comando importará as definições do NodeJS TypeScript para o seu projeto, permitindo que você use os módulos internos do Node.

Se você usar nvm, verifique se os node_modules existentes que são ligações para outras bibliotecas são compilados para a versão Node.js correta.

Eu estava tendo o mesmo erro. O motivo foi o seguinte: Usamos o nvm já que estamos executando dois aplicativos em um servidor, um requer o Node.js 5.6 porque ele usa node-gd (que não é executado no Node.js 6 por enquanto), o outro requer Node.js 6. Node.js 6 é a instalação do apt-get .

Também usamos a ferramenta pm2 para implantar.

Portanto, a configuração padrão é que o processo pm2 é iniciado quando o nvm não está em vigor, portanto, ele usa a instalação do apt-get do Node.js (versão 6). Assim, o daemon principal do pm2 começa com o Node.js 6. Se eu executar aplicativos no modo fork, eles iniciam em processos separados e as configurações do nvm estão em vigor. Quando executo aplicativos no modo de cluster – eles herdam o ambiente não-nvm.

Então, quando tentei mudar para o modo de cluster, o aplicativo falhou ao iniciar porque as ligações compiladas para 5.6 falharam com essa mensagem.

Eu consertei isso reiniciando pm2 quando as configurações nvm estão em vigor. Também scripts de boot devem ser corrigidos.

Remova sua pasta raiz node_module do seu projeto (por exemplo: myApp ). Vá para a pasta myApp e digite o comando abaixo no terminal

 >myApp>npm install 

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

Especifique o caminho para a pasta restler, que estará dentro da pasta node_modules como: var rest = require (‘./ node_modules / restler’);

Isso funcionou para mim.

Eu experimentei esse erro ontem. Demorei um pouco para perceber que a input main em package.json estava apontando para um arquivo que eu havia movido. Uma vez eu atualizei que o erro desapareceu e o pacote funcionou.

DICA PRO:

Este erro aconteceu comigo, enquanto lutava contra a fadiga e doenças leves, porque eu digitei o node blah vez de npm blah .

A mensagem de erro recebida não foi irritada o suficiente para me alertar para a minha própria loucura!

Eu enfrentei o mesmo problema quando alguém da equipe atualizou o package.json no SVN. Simplesmente remover o diretório 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 isso ajude alguém!

Eu estava tentando publicar meu próprio pacote e depois incluí-lo em outro projeto. Eu tive esse problema por causa de como eu construí o primeiro módulo. Estou usando a exportação ES2015 para criar o módulo, por exemplo, digamos 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 do npm install module-name em outro projeto (nenhum ES2015) que eu tive que fazer

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

Para realmente ter o pacote importado.

Espero que ajude!

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

Tinha transformado um único arquivo em uma pasta .

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

Corrigido por reiniciar o processo.

Acabei de encontrar um cenário incomum que pode ser útil para alguém e é uma espécie de arenque vermelho.

Eu também estava recebendo o erro Não é possível encontrar o módulo, mas, estranhamente, tudo funcionou perfeitamente no meu ambiente Node.js local (hospedado por Mac). Esse problema só apareceu quando o código foi implantado em nosso servidor Linux.

Bem … acabou por ser um erro de digitação que (aparentemente) a instalação do Node.js baseada em Mac ficou perfeitamente feliz em ignorar.

O include ficou assim:

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

Mas o arquivo real foi chamado “s3Uploader.class.js”

Observe a diferença de maiúscula entre ‘s’ e ‘S’ entre o código e o nome do arquivo.

Então – na estranha chance de que nenhuma das outras soluções aqui está resolvendo o seu problema, verifique que você não está enganando os caracteres do seu nome de arquivo incluído! 🙂

e DUH!

Esse erro pode ser encontrado se você estiver require um módulo que tenha um campo main ausente ou incorreto em seu pacote.json. Embora o próprio módulo esteja instalado, o npm / node tem que usar um único arquivo .js como um ponto de input para o seu módulo. Se o campo main não estiver lá, o padrão é procurar por index.js na pasta do seu módulo. Se o arquivo principal do seu módulo não for chamado de index.js, ele não poderá require isso.

Descoberto ao transformar um módulo baseado em browserify em um módulo requireable do CommonJS; browserify não se importava com o campo main falta e, portanto, o erro passou despercebido.

Eu posso adicionar mais um lugar para verificar; o pacote que eu estava tentando usar era outro dos meus próprios pacotes que publiquei em um repository privado da NPM. Eu tinha esquecido de configurar a propriedade ‘main’ no package.json corretamente. Então, o pacote estava lá na pasta node_modules do pacote consumidor, mas eu estava recebendo “não é possível encontrar o módulo”. Levou alguns minutos para perceber meu erro. 🙁

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

 npm install redux --save 

Talvez, como eu, você defina “exibir mecanismo” como expresso para um mecanismo inexistente ou tente usar um mecanismo de criação de modelos não registrado. Certifique-se de usar: app.engine('engine name',engine) app.set('view engine','engine name')

Verifique se a variável de ambiente NODE_PATH está configurada corretamente e apontando para o caminho node_modules. nodejs usa essa variável para procurar as bibliotecas

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

(Psiu! Eu não tenho certeza se eu ajudei com sucesso a resolver o erro acima, ou se eu quebrei alguma regra ou formato de resposta, mas eu enfrentei o erro acima e alguns outros e levei muito tempo para eu encontrar as soluções adequadas para esses erros.Eu estou escrevendo a solução completa, porque no caso, se alguém também enfrenta esses erros, então ele esperamos obter uma solução aqui.)

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

Eu sou novo para o todo e2e e parte de testes de unidade. Comecei a investigar essa parte do Transferidor . Agora eu já tinha os arquivos em que os testes foram escritos, mas eu tive que executar os testes.

Eu já tinha instalado todos os softwares e ferramentas necessários, mas quando eu inicialmente corri o código para executar os testes, gulp itest , recebi o erro ‘Não foi possível encontrar o módulo’ . Depois de passar por muitas perguntas diferentes sobre o SO, encontrei uma resposta que achei que poderia ajudar a obter uma solução.

A pessoa havia sugerido para executar o comando npm install na pasta do meu projeto.

O motivo para isso foi atualizar a pasta node-modules , dentro da pasta do nosso projeto, com todos os arquivos e dependencies necessários e necessários.

(A parte abaixo talvez seja irrelevante com essa pergunta, mas pode ser útil se alguém se deparar 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' foi Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver' .

No entanto, a solução desse erro foi muito boba (e engraçada) para mim. Eu já tinha o arquivo chromedriver na minha pasta de selenium . Mas, acontece que o erro acima estava vindo porque meus arquivos do chromedriver estavam dentro da pasta de selenium e não dentro da pasta chromedriver . Então, criar uma pasta chromedriver e copiar os arquivos do chromedriver solucionou meu problema!

Além disso, para o erro: Tempo limite esgotado aguardando o WebDriver Server , você poderia adicionar essa linha de código ao arquivo conf.js dentro do exports.config exports.config{} :

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

Espero que isto ajude!

Execute o seguinte comando apenas:

 npm install 

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

Eu tenho a solução simples para resolver esse problema.

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

e depois instalar o nó.

Agora seu problema será resolvido.

Altere o diretório e aponte para a pasta do projeto atual e, em seguida, “npm install”. .

Isso instalará todas as dependencies e módulos na pasta do seu projeto.