node.js, Erro: Não foi possível encontrar o módulo 'express'


125

Eu sou novo no Node.js, tente aprender o Express para criar meu primeiro aplicativo da Web. Fiquei preso no meu primeiro código de exemplo e preciso de ajuda para executá-lo. Antes de postar essa pergunta, pesquisei no estouro de pilha, encontrei algumas perguntas semelhantes, mas ainda não consegui corrigi-lo.

Erro: Não foi possível encontrar o módulo 'express'

Estou usando o mac os 10.8.2 . Eu tenho o Node.js instalado usando nvm.

caminho node.js: 0.8.20 para o nó: /Users/feelexit/nvm/v0.8.20/bin/node para expressar: / Users / feelexit / nvm / node_modules / express

aqui está o meu código de exemplo: esse arquivo localiza em:

/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js

var express = require('express');

var app = express();

app.get('/', function(req, res){

    res.send('welcome to express');
});

app.listen(3000);

quando tento executar este comando node index.js

Recebo a seguinte mensagem de erro, por favor me ajude a corrigi-lo.

Obrigado.

Error: Cannot find module 'express'
    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.<anonymous> (/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js:1:81)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
feelexits-Mac:node_modules feelexit$ 

Atualize para responder à pergunta de chovy:

feelexits-Mac:~ feelexit$ npm install
npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Darwin 12.2.0
npm ERR! command "/Users/feelexit/nvm/v0.8.20/bin/node" "/Users/feelexit/nvm/v0.8.20/bin/npm" "install"
npm ERR! cwd /Users/feelexit
npm ERR! node -v v0.8.20
npm ERR! npm -v 1.2.11
npm ERR! path /Users/feelexit/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/feelexit/npm-debug.log
npm ERR! not ok code 0


30
Você npm install
digitou

1
Você tem certeza de que a biblioteca expressa está na sua pasta "node_modules"? Você também pode tentar mover o arquivo index.js para cima em um diretório para "/ Users / feelexit / WebstormProjects / learnnode /" e deixar a pasta node_modules em paz.
Padrão

1
Por favor, poste seu package.jsonarquivo. Isso ajudará na depuração do problema.
Akhil Raina

@chovy, eu uso o npm install express para instalar o express. o que apenas "npm install" faz?
qinking126

Respostas:


157

Diz

 Cannot find module 'express'

Você tem o Express instalado? Caso contrário, execute-o.

 npm install express

E execute seu programa novamente.


1
Isso não resolve o problema no meu caso. npm install expressmostra esse erro npm ERR! Error: UNKNOWN, symlink '../express/bin/express'. Parece ser uma questão mais profunda.
Sliq # 15/13

Use sudo se você não tiver corrigido suas permissões de diretório para o npm. De qualquer forma, "sudo npm install" é uma opção melhor.
Gaurav Gupta

Os links simbólicos costumam ocorrer, se você instalou as coisas globalmente e, sim, o link simbólico foi interrompido. Tente npm linkrecriar a respectiva ligação ...
Frank Nocke

@Sliq Eu tentei com sua solução, mas não consigo resolver meu problema, você pode me ajudar?
VJyV 10/10

Não esqueça "E execute seu programa novamente." No meu caso, tive que reiniciar o processo no meu process manager. Não foi reiniciado por si só.
Tadej

42

Depois de se expressar no seu terminal, faça

 npm install

Para instalar todas as dependências.

Em seguida, você pode executar o aplicativo do nó para executar o servidor.


7
Você deve salientar que isso requer um arquivo de lista de pacotes, por exemplo, .json. E nem sempre é esse o caso.
Pogrindis 7/11

@VjyV no mesmo diretório em que seu arquivo de nó .js. Mas ele deve ter o arquivo package.json no diretório para poder instalar as dependências necessárias.
Saurabh Rana

34

Verifique se você instalou o expressmódulo. Caso contrário, use este comando:

npm install express

e se seu node_modulesdiretório estiver em outro local, defina a NODE_PATHvariável de ambiente:

set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%

12
Esta é a resposta certa para todos que postarem essas CTRL+C / CTRL+V npm installrespostas: você realmente acha que alguém tentaria executar algo sem verificar se o problema foi instalado primeiro? Sério ...
Claudio Holanda

3
Apenas adicionando um pequeno detalhe: você precisa executar o comando install express no diretório do seu aplicativo e não na pasta de instalação do Node.js. ou na pasta npm no AppData. Porque esse foi o erro que cometi, porque pensei que era algum tipo de complemento do SDK.
Alex

28

 npm install --save express   
Isso funcionou para mim, basta executar a instalação do express.js novamente


11

A instalação do npm a partir do diretório do aplicativo corrigirá o problema, pois instalará tudo o que for necessário


5

Desenterrando um encadeamento antigo aqui, MAS Eu tive esse mesmo erro e resolvi navegando para o diretório em que meu NodeApp reside e em execução npm install -d


Não sei por que ou como isso é importante, mas isso o instala em seus devdependencies: docs.npmjs.com/cli/install
Guy Lowe

1
@GuyLowe -dé depurado para npm, -Dé dev dependências.
John Pavek

4

A menos que você configure Node_PATH , a única outra opção é instalar o express no diretório do aplicativo, como npm install express --save. O Express já pode estar instalado, mas nodenão o encontra por algum motivo


Este funcionou para mim, é melhor executar o comando install no mesmo diretório que os arquivos .js. Além disso, você pode executar o comando "npm init" para criar o arquivo package.json para evitar problemas adicionais.
emarshah

3

Você tem seu módulo expresso localizado em um diretório diferente do seu projeto. Esse é provavelmente o problema, já que você está tentando require()localmente. Tente mover o módulo express de / Users / feelexit / nvm / node_modules / express para / Users / feelexit / WebstormProjects / learnnode / node_modules / express . Essas informações podem fornecer mais detalhes sobre as estruturas de arquivos node_module.


2

se o seu arquivo principal está localizado /Users/feelexit/WebstormProjects/learnnode/node_modules/index.js, o express precisa estar localizado, /Users/feelexit/WebstormProjects/learnnode/node_modules/node_modulespois o nó sempre procura por módulos ./node_modules(e sua pasta interna) quando o caminho não começa com ./ou /( mais informações aqui )

Eu acho que você perdeu colocou seu arquivo principal na pasta do módulo


2

para esse cenário, execute o comando npm install express usando o prompt do cmd para a respectiva pasta na qual você deseja executar o programa. Exemplo: desejo executar o programa express module server.js em F: \ nodeSample. Portanto, execute "npm install express" nessa pasta específica e execute server.js


1

Em casos raros, o cache npm pode ficar corrompido. Para mim, o que funcionou foi:

npm cache clean --force

Geralmente, o gerenciador de pacotes detecta a corrupção e busca por conta própria, de modo que isso geralmente não é necessário. No entanto, no meu caso, o Windows 10 travou algumas vezes e suspeito que isso possa ter ocorrido durante uma operação de busca. Espero que ajude alguém!

Mais informações: https://docs.npmjs.com/cli/cache


1

Me deparei com um problema semelhante e, no final, era questão de algumas dependências antigas que estavam atrapalhando meu servidor Heroku.

Enquanto estiver na pasta do meu projeto, executei:

npm uninstall
npm install

Espero que ajude


0

npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'

Isso acontece devido à falta de permissões ou arquivos desvinculados enquanto o npm estava funcionando.

Ou seja, a execução npmcomo esse usuário não possui direitos suficientes para ler / gravar em um arquivo, neste caso, package.json.

tente adicionar sudoantes de todo o comando - ele deve resolver.

$ sudo npm install -g express
$ Password:*******

Senha seria sua senha de administrador do seu mac.

-gO flag instalará este módulo (express) no contexto global do nó - o que significa que o nó deve / deve reconhecer o expressmódulo a partir de qualquer arquivo js sem precisar fornecer um caminho completo para o módulo em uso.

Espero que isto ajude!!


0

Eu tive o mesmo problema. Meu problema foi que eu tenho que mudar para o diretório do projeto Node.js. na linha de comando antes de instalar o express.

cd /Users/feelexit/WebstormProjects/learnnode/node_modules/

0

Suponho que este seja um curso do curso de Desenvolvimento Web de Colt Steele ... Eu estava procurando a mesma resposta do motivo pelo qual também acabei com esse erro .. Colt não diz isso, mas você pega a pasta node_module e move na nova pasta em que você está trabalhando ... foi o que funcionou para mim.


0

Execute o npm install express body-parser cookie-parser multer --savecomando no mesmo diretório com o arquivo nodejs do código-fonte para resolver esse problema. P / s: verifique seu diretório após executar o comando para entender mais!


0
D:\learn\Node.js\node app.js
module.js:549
    throw err;
    ^

Error: Cannot find module 'body-parser'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)

Às vezes, a versão não corresponde ao pacote.json Corrigido o problema verificando o pacote.json e use os seguintes comandos: npm install body-parser@1.13.2 que ele resolveu para mim.


0

Você tentou

npm install

Se você está procurando especificamente apenas expressar

npm install --save express
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.