node.js, Error: No se puede encontrar el módulo 'express'


125

Soy nuevo en Node.js, trato de aprender express para construir mi primera aplicación web. Me quedé atascado en mi primer código de muestra y necesito ayuda para que funcione. Antes de publicar esta pregunta, busqué en el desbordamiento de la pila, encontré algunas preguntas similares pero aún no pude solucionarlo.

Error: no se puede encontrar el módulo 'express'

Estoy usando mac os 10.8.2 . Tengo Node.js instalado usando nvm.

node.js: 0.8.20 ruta al nodo: /Users/feelexit/nvm/v0.8.20/bin/node ruta a express: / Users / feelexit / nvm / node_modules / express

aquí está mi código de muestra: este archivo se ubica en:

/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);

cuando trato de ejecutar este comando node index.js

Recibo el siguiente mensaje de error, ayúdame a solucionarlo.

Gracias.

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$ 

Actualización para responder la pregunta 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
¿ npm install
Tecleaste

1
¿Está seguro de que la biblioteca express está en su carpeta "node_modules"? También puede intentar mover su archivo index.js hacia arriba un directorio a "/ Users / feelexit / WebstormProjects / learnnode /" y dejar la carpeta node_modules sola.
Predeterminado

1
Por favor publique su package.jsonarchivo. Eso ayudará a depurar el problema.
Akhil Raina

@chovy, uso npm install express para instalar express. ¿Qué hace solo "npm install"?
qinking126

Respuestas:


157

Dice

 Cannot find module 'express'

¿Tiene Express instalado? Si no es así, ejecute esto.

 npm install express

Y ejecuta tu programa nuevamente.


1
Esto no soluciona el problema en mi caso. npm install expressmuestra este error npm ERR! Error: UNKNOWN, symlink '../express/bin/express'. Parece ser un problema más profundo.
Sliq

Use sudo si no ha arreglado sus permisos de directorio para npm. En cualquier caso, "sudo npm install" es una mejor opción.
Gaurav Gupta

a menudo se producen errores de enlace simbólico, si instaló cosas globalmente y, sí, el enlace simbólico se rompió. Intente npm linkvolver a crear el enlace correspondiente ...
Frank Nocke

@Sliq Intenté con tu solución pero no puedo resolver mi problema, ¿puedes ayudarme?
VjyV

No pase por alto "Y vuelva a ejecutar su programa". En mi caso tuve que reiniciar el proceso en mi process manager. No se reinició por sí solo.
Tadej

42

Después de expresarte en tu terminal, haz

 npm install

Para instalar todas las dependencias.

Luego puede hacer una aplicación de nodo para ejecutar el servidor.


77
Debe señalar que esto requiere un archivo de lista de paquetes, es decir .json. Y este no es siempre el caso.
Pogrindis

@VjyV en el mismo directorio que tiene su archivo de nodo .js. Pero debe tener el archivo package.json en el directorio para que pueda instalar las dependencias requeridas.
Saurabh Rana

34

Compruebe si ha instalado el expressmódulo. Si no, use este comando:

npm install express

y si su node_modulesdirectorio está en otro lugar, establezca la NODE_PATHvariable de entorno:

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

12
Esta es la respuesta correcta, para todos los que publiquen estas CTRL+C / CTRL+V npm installrespuestas: ¿realmente crees que alguien intentaría ejecutar algo sin verificar si está instalado primero? En serio ...
Claudio Holanda

3
Simplemente agregue un detalle menor: debe ejecutar el comando install express en el directorio de su aplicación y no en la carpeta de instalación de Node.js o la carpeta npm en AppData. Porque ese fue el error que cometí, porque pensé que era algún tipo de complemento SDK.
Alex

28

 npm install --save express   
Esto funcionó para mí, solo ejecute la instalación express.js nuevamente


11

La instalación de npm desde el directorio de su aplicación solucionará el problema ya que instalará todo lo necesario


5

Desenterrando un hilo viejo aquí PERO tuve este mismo error y resolví navegando al directorio en el que reside mi NodeApp y ejecutándolo npm install -d


No estoy seguro de por qué o cómo importa, pero esto lo instala en sus dependencias de desarrollo: docs.npmjs.com/cli/install
Guy Lowe

1
@GuyLowe -des depuración para npm, -Ddepende de dev.
John Pavek

4

A menos que configure Node_PATH , la única otra opción es instalar express en el directorio de la aplicación, como npm install express --save. Es posible que Express ya esté instalado, pero nodepor alguna razón no puede encontrarlo


Este funcionó para mí, mejor ejecute el comando de instalación en el mismo directorio que sus archivos .js. También puede ejecutar el comando "npm init" para crear el archivo package.json para evitar más problemas.
emarshah

3

Tiene su módulo express ubicado en un directorio diferente al de su proyecto. Ese es probablemente el problema ya que lo está intentando require()localmente. Intente mover su módulo express de / Users / feelexit / nvm / node_modules / express a / Users / feelexit / WebstormProjects / learnnode / node_modules / express . Esta información puede brindarle más detalles sobre las estructuras de archivo node_module.


2

si su archivo principal está ubicado en /Users/feelexit/WebstormProjects/learnnode/node_modules/index.jsexpress, entonces debe ubicarse en express /Users/feelexit/WebstormProjects/learnnode/node_modules/node_modulesya que el nodo siempre busca módulos en ./node_modules(y su carpeta interna) cuando la ruta no comienza con ./o /( más información aquí )

Creo que extrañaste tu archivo principal en la carpeta del módulo


2

para este escenario, ejecute el comando npm install express utilizando su indicador de cmd para la carpeta respectiva donde desea ejecutar el programa. Ejemplo Quiero ejecutar el programa express module server.js en F: \ nodeSample. Ejecute "npm install express" en esa carpeta en particular y luego ejecute server.js


1

Ejecute el npm install express body-parser cookie-parser multer --savecomando en el mismo directorio con su archivo de código fuente nodejs para resolver este problema. P / s: ¡verifique su directorio después de ejecutar el comando para comprender más!


1

En casos raros, el caché npm puede corromperse. Para mí, lo que funcionó fue:

npm cache clean --force

En general, el administrador de paquetes detectará la corrupción y volverá a buscarlo por sí solo, por lo que esto no suele ser necesario. Sin embargo, en mi caso, Windows 10 se bloqueó varias veces y sospecho que esto pudo haber sido durante una operación de recuperación. Espero que ayude a alguien!

Más información: https://docs.npmjs.com/cli/cache


1

Me encontré con un problema similar y al final fue una cuestión de algunas dependencias antiguas que estaban estropeando mi servidor Heroku.

Mientras estaba en la carpeta de mi proyecto, ejecuté:

npm uninstall
npm install

Espero que ayude


0

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

Esto sucede debido a la falta de permisos o archivos desvinculados mientras npm estaba funcionando.

Lo que significa que ejecutar npmcomo este usuario no tiene suficientes derechos para leer / escribir desde un archivo, en este caso package.json.

intente agregar sudoantes del comando completo; debería resolverse.

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

La contraseña sería la contraseña de administrador de tu Mac.

-gflag instalará este módulo (express) en el contexto global del nodo, lo que significa que el nodo reconocerá / debería reconocer el expressmódulo desde cualquier archivo js sin tener que proporcionar una ruta completa al módulo en uso.

¡¡Espero que esto ayude!!


0

Yo tuve el mismo problema. Mi problema fue que tengo que cambiar al directorio del proyecto Node.js en la línea de comandos antes de instalar express.

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

0

Supongo que este es el curso del curso de Desarrollo Web de Colt Steele ... Estaba buscando la misma respuesta de por qué terminé con ese error también ... Colt no lo dice, pero tomas la carpeta node_module y te mueves en la nueva carpeta en la que estás trabajando ... eso fue lo que funcionó para mí.


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)

A veces, la versión no coincide con package.json Se solucionó el problema al verificar package.json y luego usar los siguientes comandos: npm install body-parser@1.13.2 se resolvió por mí.


0

Has probado

npm install

Si buscas específicamente solo express

npm install --save express
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.