2012-05-06 24 views
6

Estoy comenzando a desarrollar node.j, encuentro un problema con respecto al uso del módulo 'formidable'.No se puede encontrar el módulo formidable - Node.js

que tienen este error:

Error: Cannot find module 'formidable'

Aquí está la lista de módulos instalados usando 'ls NGP instalados':

 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
├── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│  ├── [email protected] 
│  ├── [email protected] 
│  └── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
└─┬ [email protected] 
    ├── [email protected] 
    ├── [email protected] 
    └─┬ [email protected] 
    ├─┬ [email protected] 
    │ └── [email protected] 
    ├── [email protected] 
    ├─┬ [email protected] 
    │ ├── [email protected] 
    │ └── [email protected] 
    └── [email protected] 

añado que es el único módulo que genera este error.

Además, realmente no entiendo la forma en que están encapsulados algunos módulos, parece que npm está instalando el módulo directamente en el directorio estoy usando el comando de instalación del módulo, y noto que formidable ha sido instalado en el express/connect/module en su primera instalación.

¿Puede darme más información sobre el árbol de instalación del módulo?
Gracias por sus respuestas

Saludos

+1

no se asuste! Mantén la calma, piensa dónde viste por última vez el _formable Node.js _... :) – gdoron

+0

¿Podemos por favor ver el código donde intentas exigir formidable? De lo contrario, ¿cómo podemos hacer nada para ayudarlo ... – Hubro

+0

Estoy llamando al require de los módulos directamente al comienzo de mi archivo.js, estoy usando esta llamada: var formidable = require ("formidable") ; – bengo

Respuesta

3

Para entender resolución módulo, echar un vistazo a la Modules documentation, especialmente Loading from node_modules Folders.

For example, if the file at '/home/ry/projects/foo.js' called require('bar.js') , then node would look in the following locations, in this order:

  • /home/ry/projects/node_modules/bar.js
  • /home/ry/node_modules/bar.js
  • /home/node_modules/bar.js
  • /node_modules/bar.js

NPM se aprovecha de esto por los módulos a instalar en:

./node_modules/{module} 

Por lo tanto, cuando se utiliza npm install formidable, se creará e instalar el módulo en:

./node_modules/formidable 

embargo, esta significa que solo las secuencias de comandos dentro del directorio actual, incluidos los subdirectorios, tendrán éxito al usar require('formidable'):

./foo.js 
./lib/bar.js 
./src/baz.js 
./src/sub/qux.js 

Sin embargo, puede instalar módulos como "global", pero hay que pedirlo explícitamente con -g o --global:

npm install -g formidable 

Entonces, cualquier secuencia de comandos en el sistema debe ser capaz de require('formidable').


En cuanto a la salida de árbol, actual tiene 5 módulos instalados disponibles desde el directorio actual:

  • express
  • formidable
  • node-inspector
  • npm
  • socket.io

Todo lo demás en el árbol es una lista de las dependencias de estos módulos, y sus dependencias, etc., pero solo estos 5 están disponibles para require(...) dentro de sus scripts.

+0

Gracias por la información, muy útil – bengo

5

La respuesta aceptada parece muy completo y correcto, pero esto funcionó para mí:

npm install -d 

d representa dependencias (creo)

+0

+1 me ha ayudado _C: \ Users \ yash \ AppData \ Roaming \ npm-cache \ selenium-webdriver \ 2.47.0 \ package \ example_ 'ctrl + shift + abrir la ventana de comandos aquí 'luego usé' npm install -d' instaló todas las dependencias y luego ejecutó un ejemplo 'node google_search.js' – Yash

Cuestiones relacionadas