node.js

¿Cómo resuelvo el error "No se puede encontrar el módulo" usando Node.js?



(24)

Después de extraer un módulo de GitHub y seguir las instrucciones para construirlo, trato de incluirlo en un proyecto existente usando:

> npm install ../faye

Esto parece hacer el truco:

> npm list /home/dave/src/server └─┬ [email protected] ├── [email protected] ├── [email protected] └── [email protected]

Pero Node.js no puede encontrar el 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)

Tengo muchas ganas de entender lo que está pasando aquí, pero no entiendo bien dónde mirar a continuación. ¿Alguna sugerencia?


Acabo de encontrar un escenario inusual que puede ser útil para alguien y es una especie de pista falsa.

También recibí el error del módulo "No puedo encontrar" pero, curiosamente, todo funcionó a la perfección en el entorno Node.js de mi local (alojado en Mac). Este problema solo apareció cuando el código se implementó en nuestro servidor Linux.

Bueno ... resultó ser un error tipográfico que (aparentemente) la instalación de Node.js basada en Mac estaba perfectamente feliz de ignorar.

La inclusión se veía así:

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

Pero el archivo real se llamó "s3Uploader.class.js"

Observe la diferencia de la caja en la ''s'' frente a la ''S'' entre el código y el nombre del archivo.

Entonces, en la extraña posibilidad de que ninguna de las otras soluciones aquí resuelvan su problema, ¡compruebe que no está malinterpretando a los caracteres en su nombre de archivo incluido! :)

y DUH!


CONSEJO PRO:

Este error me sucedió mientras luchaba contra la fatiga y las enfermedades leves, porque npm blah node blah lugar de npm blah .

¡El mensaje de error recibido no estaba lo suficientemente enojado como para alertarme sobre mi propia locura!


Cambie el directorio y apunte a su carpeta de proyecto actual y luego "npm install". .

Esto instalará todas las dependencias y módulos en su carpeta de proyecto.


Compruebe si la variable de entorno NODE_PATH está establecida correctamente y apunta a la ruta de node_modules. nodejs usa esta variable para buscar las bibliotecas


Ejecuta el siguiente comando solamente:

npm install

Instalará todos los módulos necesarios en la carpeta node_modules .


El uso de npm install instala el módulo solo en el directorio actual (en un subdirectorio llamado node_modules ). ¿Se encuentra app.js bajo home/dave/src/server/ ? Si no es así y desea utilizar el módulo desde cualquier directorio, debe instalarlo globalmente utilizando npm install -g .

Normalmente instalo la mayoría de los paquetes localmente para que se verifiquen junto con el código de mi proyecto.

Actualización (3/2016):

He recibido muchas críticas por mi respuesta, específicamente que verifico los paquetes de los que depende mi código. Hace unos días, alguien no publicó todos sus paquetes ( https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp ) que rompió a React, Babel, y casi todo más. Esperemos que ahora esté claro que si tiene un código de producción, no puede confiar en que NPM realmente mantenga sus dependencias por usted.


Elimine su carpeta raíz node_module de su proyecto (por ejemplo: myApp ). Ir a la carpeta myApp y luego escribir debajo del comando desde la terminal

>myApp>npm install

Instalará todos los módulos de dependencia requeridos para su proyecto.


En mi caso tuve UNMET PEER DEPENDENCY redux@^3.0.0 causando este mensaje de error, UNMET PEER DEPENDENCY redux@^3.0.0 todos e instale los módulos faltantes nuevamente usando --save

npm install redux --save


En primer lugar, sí, una parte de mi respuesta definitivamente es útil para resolver el error publicado por OP. En segundo lugar, después de intentar el siguiente paso, me enfrenté a un par de otros errores y, por lo tanto, he escrito la solución de esos también.

(¡Psst! No estoy seguro de haber ayudado con éxito a resolver el error anterior o de haber roto alguna regla o formato de respuesta, pero enfrenté el error anterior y algunos otros y me tomó mucho tiempo encontrarlo) la solución adecuada para esos errores. Estoy escribiendo la solución completa porque, en caso de que, si alguien más también enfrenta estos errores, esperemos que encuentre una solución aquí.)

Entonces, agregando y elaborando la respuesta proporcionada por , y también agregando mi experiencia personal, aquí está:

Soy nuevo en toda la parte e2e y pruebas de unidad parte. Comencé a buscar en esta parte de Protractor . Ahora ya tenía los archivos en los que se escribieron las pruebas, pero tuve que ejecutar las pruebas.

Ya había instalado todos los softwares y herramientas necesarios, pero cuando ejecuté inicialmente el código para ejecutar las pruebas, gulp itest , obtuve el error "No se puede encontrar el módulo" . Después de pasar por muchas preguntas diferentes sobre el SO, encontré una respuesta que pensé podría ayudar a encontrar una solución.

La persona había sugerido ejecutar el comando npm install en la carpeta de mi proyecto.

La razón para hacer esto fue actualizar la carpeta de módulos de nodo , dentro de nuestra carpeta de proyecto, con todos los archivos y dependencias necesarios y necesarios.

(La parte de abajo puede ser irrelevante con esta pregunta, pero podría ser útil si alguien se encuentra con la misma situación que enfrenté).

El paso anterior seguramente resolvió mi error anterior, ¡pero lanzó uno nuevo! Esta vez el error Could not find chromedriver at ''../node_modules/protractor/selenium/chromedriver'' .

Sin embargo, la solución de este error fue bastante tonta (y divertida) para mí. Ya tenía el archivo chromedriver en mi carpeta de selenio . Pero, resulta que el error anterior venía porque mis archivos de chromedriver estaban dentro de la carpeta de selenio y no dentro de la carpeta de chromedriver . Entonces, crear una carpeta de chromedriver y copiar los archivos de chromedriver allí solucionó mi problema.

Además, para el error: el tiempo de espera para el servidor WebDriver , puede agregar esta línea de código al archivo conf.js dentro de exports.config exports.config{} :

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

¡Espero que esto ayude!


Especifique la ruta a la carpeta del restler, que estará dentro de la carpeta node_modules como: var rest = require (''./ node_modules / restler'');

Esto funcionó para mí.


Estaba intentando publicar mi propio paquete y luego incluirlo en otro proyecto. Tuve ese problema por cómo construí el primer módulo. Estoy usando ES2015 exportar para crear el módulo, por ejemplo, digamos que el módulo se ve así:

export default function(who = ''world''){ return `Hello ${who}`; }

Después compilado con Babel y antes 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; };

Así que después de npm install module-name en otro proyecto (ninguno ES2015) tuve que hacer

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

Para obtener realmente el paquete importado.

¡Espero que ayude!


Este error se puede encontrar si require un módulo que tiene un campo main faltante o incorrecto en su package.json. Aunque el módulo en sí está instalado, npm / node tiene que usar un solo archivo .js como punto de entrada a su módulo. Si el campo main no está allí, se busca de forma predeterminada index.js en la carpeta de su módulo. Si el archivo principal de su módulo no se llama index.js, no podrá require .

Se browserify al convertir un módulo basado en browserify en un módulo de CommonJS que se puede require ; browserify no le importó el campo main faltaba, por lo que el error pasó desapercibido.


Esto sucede cuando una primera instalación de npm ha npm por algún motivo (SIGINT de npm), o si el retraso fue demasiado largo o los datos están dañados. Intentar una instalación de npm de nuevo no salvará el problema.

Algo salió mal en la primera comprobación de npm, por lo que la mejor opción es eliminar el archivo y reiniciar la instalación de npm.


Experimenté este error ayer. Me tomó un tiempo darme cuenta de que la entrada main en package.json estaba apuntando a un archivo que había movido. Una vez actualizado, el error desapareció y el paquete funcionó.


Instale el nuevo CLI v3 (npm install -g ionic @ latest).

Si este problema sigue siendo un problema en CLI v3. ¡Gracias!


Me encontré con el mismo problema cuando alguien más en el equipo actualizó package.json en SVN. Simplemente eliminar el directorio node_modules no ayudó. Cómo resolví el problema es:

rm -rf node_modules rm package.json rm package-lock.json svn up npm install ng build --env=prod

¡Espero que esto ayude a alguien!


Para los usuarios de TypeScript, si está importando un módulo de nodo incorporado (como http , path o url ) y recibe un error como "Cannot find module "x" , el error se puede corregir ejecutando

npm install @types/node --save-dev

El comando importará las definiciones de TypeScript de NodeJS en su proyecto, permitiéndole usar los módulos incorporados de Node.


Puedo agregar un lugar más para revisar; el paquete que intentaba usar era otro de mis propios paquetes que había publicado en un repositorio privado de NPM. Me había olvidado de configurar la propiedad ''main'' en package.json correctamente. Entonces, el paquete estaba allí en la carpeta node_modules del paquete consumidor, pero estaba recibiendo "no puedo encontrar el módulo". Me tomó unos minutos darme cuenta de mi error. :-(


Si utiliza nvm, compruebe que los node_modules existentes que son enlaces a otras bibliotecas están compilados para la versión correcta de Node.js.

Estaba teniendo el mismo error. El motivo fue el siguiente: usamos nvm ya que estamos ejecutando dos aplicaciones en un servidor, una requiere Node.js 5.6 porque usa node-gd (que por ahora no se ejecuta en Node.js 6), la otra requiere Node.js 6. Node.js 6 es la instalación de apt-get .

También utilizamos la herramienta pm2 para desplegar.

Por lo tanto, la configuración predeterminada es que el proceso pm2 se inicia cuando nvm no está en vigor, por lo que utiliza la instalación apt-get de Node.js (versión 6). Así que el daemon principal de pm2 comienza con Node.js 6. Si ejecuto aplicaciones en modo fork, se inician en procesos separados y la configuración de nvm está en efecto. Cuando ejecuto aplicaciones en modo clúster, heredan el entorno que no es nvm.

Entonces, cuando intenté cambiar al modo de clúster, la aplicación no pudo iniciarse porque los enlaces compilados para 5.6 fallan con este mensaje.

He arreglado eso reiniciando pm2 cuando las configuraciones de nvm están en efecto. También los scripts de inicio deben ser arreglados.


Tal vez, como yo, configuró ''ver motor'' en modo expreso a un motor que no existe, o intentó utilizar un motor de plantillas no registrado. Asegúrese de utilizar: app.engine(''engine name'',engine) app.set(''view engine'',''engine name'')


Tengo la solución simple para resolver este problema.

Simplemente elimine C: / Users / UserName / AppData / Roaming / npm /

y luego instalar el nodo.

Ahora tu problema estará resuelto.


Tuve un problema muy similar. La eliminación de la carpeta completa node_modules y la reinstalación funcionaron para mí:

rm -rf node_modules npm install


webpack este problema al usar webpack con webpack-dev-middleware .

Había convertido un solo archivo en una carpeta .

El observador pareció no ver la nueva carpeta y ahora faltaba el módulo.

Se soluciona reiniciando el proceso.


npm install --save module_name

Por ejemplo, si el error es:

{[Error: No se puede encontrar el módulo ''/root/.npm/form-data''] código: ''MODULE_NOT_FOUND''}

luego puede resolver este problema ejecutando el comando npm install --save form-data .