web-dev-qa-db-fra.com

Node.js - impossible de trouver le module

J'utilise Node Boilerplate et tout a bien fonctionné jusqu'à ce que je décide de créer un autre projet par-dessus (dans un autre répertoire).

Maintenant, j'ai exactement la même base de code (ce projet TEL QUEL) dans deux dossiers différents. Je peux en exécuter un sans aucun problème mais un autre échoue avec:

% 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)

Il y a un problème similaire expliqué ici - https://github.com/visionmedia/express/issues/535 qui dit que le problème est dans la version incompatible de connect/express.

Mais comment est-ce possible? Le code source est exactement le même dans deux dossiers et il fonctionne bien dans une copie et échoue dans un autre?

15
user80805

OK, laissez-moi répondre à ma propre question:

Désolé pour la désinformation - ces deux dossiers n'étaient pas exactement les mêmes (je vais avoir besoin d'apprendre mieux les différences Unix). Et là, il faut ("se connecter") dans le code

La récupération locale de la connexion dans le dossier/lib a priorité, mais si ce n'est pas le cas, la connexion sera chargée à partir des ~/.node_modules comme Ricardo l'a précédemment défini.

7
user80805

Les deux dossiers partagent-ils un parent commun? Node recherche les modules dans ~/.node_modules et/node_modules dans le répertoire de votre application.

8
Ricardo Tomasi

@see le module express node.js ne se charge pas correctement dans le dernier commentaire, peut-être que cela aide

l'idée de base est d'installer le module dans votre dossier d'application, pas au niveau du système

5
Georgiana