Escribí mi primera aplicación node.js, pero no puede encontrar la biblioteca express:
C:\ChatServer\Server>node server.js
module.js:340
throw err;
^
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:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Pero express está instalado (con -g
clave):
C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json range-parser@0.0.4 No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)
Alguna información:
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>node --version
v0.10.9
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6
C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)
¿Como puedó resolver esté problema? (¿ DEBO instalarlo sin -g
?)
Respuestas:
Debe instalar Express localmente en el contexto de su aplicación (
node_modules
carpeta):La razón de esto es que las aplicaciones siempre buscan en su contexto local cualquier dependencia. La instalación global es solo para configurar binarios disponibles en todo el sistema, como corredores de prueba de unidad o bootstrappers o cosas por el estilo.
Con Express, cuando lo instala globalmente, obtiene un
express
binario que puede iniciar una aplicación por usted. Para más información, escribaEntonces, para responder a su pregunta final: SÍ , debe instalarlo sin
-g
.fuente
winston
instalado globalmente, lo que funcionó por alguna razón al iniciar mi aplicación como un usuario normal, pero al iniciar mi aplicación y un script de inicio del sistema no funcionaría. Lo arreglé instalando winston localmente en el directorio de la aplicación (y agregándolo a package.json).Para mí funcionó cuando se instaló express localmente con la opción --save de la siguiente manera:
fuente
Compruebe si no está instalando el
express
módulo, use este comando:y si su
node_modules
directorio está en otro lugar, establezca laNODE_PATH
variable de entorno:fuente
Golo ha explicado bien la solución, pero podría agregar una aclaración: a
veces los módulos de nodo están instalados en
y cuando se inicia el nodo, se buscan módulos blabla.js en
Entonces, una solución es crear un enlace simbólico:
fuente
En su caso, su
express
módulo está instalado enC:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
, pero necesita obtener este módulo en el directorio de su proyecto. Por lo que debe copiar el archivo de lasexpress
carpetas de los módulosC:\Users\Dmitry\AppData\Roaming\npm\node_modules\
en el directorio de proyecto como:C:\ChatServer\Server\node_modules
. Si no tiene una carpeta llamada 'node_modules' en la carpeta de su proyecto, créela primero y pegue esos archivos en esta carpeta. Este método me funcionó en mi PC con Windows. Reinicie su servidor de nodo y vuelva a ejecutar el nodo de comandoC:\ChatServer\Server>node server.js
. Debería funcionar ahora !!!!fuente
En el sistema operativo basado en Ubuntu puedes probar
me está funcionando en Mint
fuente
Dado que ha instalado el nodo en su sistema, instale Express localmente para su proyecto usando lo siguiente para Windows:
o
Puede darle acceso global utilizando:
fuente
Tuve este error en vscode, aunque los módulos estaban instalados. Estoy usando mecanografiado y expreso. En los
server.ts
archivos, todas las importaciones tenían subrayados rojos y ondulados. Resulta que tenía untsconfig.json
archivo defectuoso .fuente
cree una carpeta en su disco duro, por ejemplo, sample1 y vaya al símbolo del sistema, escriba: cd y proporcione la ruta de la carpeta sample1 y luego instale todos los módulos ...
y luego lo que sea que esté creando, guardar la aplicación en la carpeta sample1
intentalo...
fuente
vaya a su directorio de aplicaciones e instale el módulo express usando el siguiente comando npm install express --save y luego enumere todos los módulos de instalación usando el siguiente comando npm ls verá todos los módulos de instalación local.
fuente
instalar express globalmente no funcionará en su proyecto local, por lo que debe instalarlo localmente para su uso.
Espero que esto funcione
Gracias
fuente
Llegué al mismo problema. Tenía Express instalado globalmente en / usr / local / bin /. Cuando hago 'npm install', express no se creó en node_modules del directorio local.
fuente
Esto funcionó para mí en MacOS X Sierra
fuente
No estoy orgulloso de compartir esto, pero en mi caso tuve:
fuente
Tuve el mismo error siguiendo el ejemplo en este libro: "Kubernetes Up & Running".
Veo muchas respuestas que sugieren instalar express "a mano", pero no estoy convencido de que sea la mejor solución.
Debido a que estamos usando package.json (puedo verlo en los registros) y la forma correcta de compilar la aplicación se está ejecutando
npm install
, agregué la dependencia expresa en el archivo package.json .Tengo la versión actual con
npm search express
.fuente