2011-03-13 37 views
15

Estoy usando Node Boilerplate y todo funcionó bien hasta que decidí crear otro proyecto encima (en otro directorio).Node.js - no se puede encontrar el módulo

Ahora tengo exactamente la misma base de código (este proyecto TAL CUAL) en dos carpetas diferentes. Puedo correr una de ella sin ningún problema pero otro está fallando con:

% node app.js 
node.js:116 
     throw e; // process.nextTick error, or 'error' event on first tick 
     ^
Error: Cannot find module 'connect/middleware/router' 
    at Function._resolveFilename (module.js:299:11) 
    at Function._load (module.js:245:25) 
    at require (module.js:327:19) 
    at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/server.js:17:14) 
    at Module._compile (module.js:383:26) 
    at Object..js (module.js:389:10) 
    at Module.load (module.js:315:31) 
    at Function._load (module.js:276:12) 
    at require (module.js:327:19) 
    at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/index.js:28:31) 

hay problema similar se explica aquí - https://github.com/visionmedia/express/issues/535 que dice que el problema está en la versión incompatible de conexión/expreso.

Pero, ¿cómo es esto posible? ¿El código fuente es exactamente el mismo en dos carpetas y funciona bien en una copia y falla en otra?

Respuesta

7

bien, permítame responder a mi propia pregunta:

Lo siento por la desinformación - esas dos carpetas no eran exactamente los mismos (Voy a necesitar para aprender unix diff mejor). Y allí requiere ("conectar") en el código

La comprobación local de la conexión en la carpeta/lib tiene prioridad, pero si no está allí, la conexión se cargará desde los ~/.node_modules como Ricardo configuró previamente.

8

¿Las dos carpetas comparten un elemento primario común? El nodo busca módulos en ~/.node_modules y/node_modules en su directorio de aplicación.

5

@see node.js express module not loading properly en el último comentario, tal vez ayuda a

la idea básica detrás de esto es para instalar el módulo dentro de la carpeta de la aplicación, no a nivel de sistema

+0

Esto funciona para mí, pero yo' Estoy confundido en cuanto a por qué instalar el nivel del sistema con '-g' no encuentra el módulo en el archivo js que se está ejecutando. – Adam

Cuestiones relacionadas