Je suis en train de passer à travers mon premier projet node.js. J'ai installé mongodb, j'ai un fichier server.js, et quand j'essaye de le lancer, j'obtiens cette erreur
module.js:340
throw err;
^
Error: Cannot find module 'mongodb'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
Je suis presque certain que mongodb est installé, je suis nouveau sous Unix venant de l’arrière-plan de Windows C #, mais je pense que ce chemin n’est pas configuré correctement?
L'erreur que vous obtenez indique que le package NPM pour MongoDB n'est pas correctement installé.
La solution dépend de la manière dont vous envisagez d’utiliser le NMP. Le gestionnaire de paquets NPM fonctionne selon deux modes de fonctionnement différents: local et global.
Le premier mode (et par défaut) est "local".
Si vous allez dans le dossier avec server.js
, vous verrez un sous-dossier nommé node_modules
. Sous ce dossier se trouvera un dossier mongodb
. Si ce dossier n'est pas présent, le module mongodb
n'est pas installé sur ce chemin.
Pour corriger cela, cd
dans ce dossier et tapez npm install mongodb
. Une fois le processus terminé, vous devriez avoir le dossier node_modules/mongodb
disponible.
Vous pouvez également installer le paquet MongoDB globalement en utilisant npm install -g mongodb
. Ceci est utile si vous utilisez beaucoup de choses en ligne de commande node.js, mais moins utile si vous déployez le tout.
Note latérale : il existe une norme en évolution autour de package.json
. Le package.json
est un moyen normalisé d’inclure toutes les dépendances d’un module donné. Cela vous permet d'exécuter npm update
ou npm install
à la racine d'un projet/package et "d'extraire" efficacement toutes les dépendances. Cela simplifie grandement le processus de déploiement et le processus de maintien de vos dépendances en ligne.
Après avoir essayé pendant quelque temps de l'installer sans succès (étant donné que je suis nouveau dans mongo et node), il me manquait vraiment l'étape de lien npm. Donc, pour résumer, j'ai fait ceci:
Cela fait, je pourrais le faire dans mon dossier d’application: require ('mongodb').
Voici quelques références, au cas où vous en auriez besoin:
Ce problème aurait été causé par l'une des raisons ci-dessous.
1) Vous n’avez pas installé le module mongodb.
2) Vous avez installé mongodb dans un contexte global mais pas lié à l’application actuelle.
Solution
1) Accédez au répertoire principal de l’application et exécutez npm install mongodb. Le module mongodb sera installé et votre projet le détectera automatiquement.
ou
2) Exécutez npm install mongodb -g pour installer le module mongo DB globalement, puis Ttaverse dans le répertoire principal de l'application et établissez le lien à l'aide de la commande npm link mongodb.
Liens utiles
http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/
Erreur
jamsheed-h110m-s2ph:~/project/jamsheed/meanStack/mean$ node server.js
module.js:538
throw err;
^
Error: Cannot find module 'mongodb'
at Function.Module._resolveFilename (module.js:536:15)
at Function.Module._load (module.js:466:25)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/haseeb/project/jamsheed/meanStack/mean/server.js:3:13)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
Résolu
npm installer mongodb
Editez package.json = "mongodb": "^ 3.0.1", changez "mongodb": "3.0.1",
Peut-être que vous essayez d’exécuter autrement que le chemin du projet. J’ai fait face au même problème et j’ai été résolu en suivant les étapes ci-dessous.
1.) Allez dans le répertoire de votre projet en utilisant la commande Shell "cd/chemin du projet".
2.) Maintenant, lancez votre projet.
Installez mongodb globalement en procédant comme suit: -
a) npm installez mongodb -g
b) Allez dans le répertoire de votre application, où se trouve module.js, puis lancez
npm link mongodb
Explication: - Lorsque vous installez un package globalement via npm, il est téléchargé dans le dossier global node_module. Pour moi (utilisateur Mac), il se trouve sous/usr/local/lib/node_modules/mongodb. Nous lions cela à ce répertoire à partir duquel vous essayez d'exécuter module.js.
Mon problème était que lorsque j'ai initialement créé mon fichier package.json, j'avais fait en sorte que la clé "version" corresponde à une valeur de "1.0.0". Lorsque j'ai changé cette valeur en version pour refléter la version que je voulais utiliser sous ma clé "dépendances", je me suis débarrassé de l'erreur. Il y a une image ci-dessous de la solution potentielle. Notez comment les "version" et "mongodb" sous "dépendances" correspondent .
Je suis nouveau à MongoDB. Après avoir passé des heures à installer mongodb via npm, j’ai enfin eu la photo. Vous voyez, il y a en fait trois "mongodb" dont vous devez vous occuper (j'utilise OSX):
1 . Le pilote utilisé dans NodeJS: C'est-à-dire: var mongo = require ('/ usr/local/lib/node_modules/mongodb'). Ou, vous pouvez utiliser "npm link" comme mentionné par le message précédent afin d'éviter le long chemin. La commande "npm install -g mongodb" installe le pilote mongodb sous/usr/local/lib (c'est ce que "-g" signifie). Ce gars a pris des heures et des heures à installer, je ne sais pas pourquoi, alors soyez patient!
2 . Les utilitaires mongodb (c’est-à-dire les commandes exécutables UNIX). Vous les téléchargez depuis http://www.mongodb.org/downloads . Il contient la commande mongod qui vous permet de démarrer la base de données mongodb. Donc, dans mon/usr/local/bin, j'ai créé un lien symbolique, mongod, pointant vers /usr/local/lib/node_modules/mongodb-osx-x86_64-2.6.7/bin/mongod, afin que je puisse exécuter mongod de n'importe où .
3 . La base de données mongodb désignée par/data/db. Donc, sous/data, j'ai créé un lien symbolique, db, pointant vers/Users/your_user_id/Database/mongodb (ou n'importe où vous voulez le mettre), dans lequel mongodb est un répertoire vide que vous pouvez créer via mkdir.
Comme vous avez installé le mongodb # 2 ci-dessus, vous pouvez donc exécuter mongod en ligne de commande, ce qui créera et démarrera la base de données sous mongodb # 3.
Parce que vous avez mongodb # 1 installé par npm, vous pouvez maintenant en avoir besoin dans votre programme NodeJS.
Travail accompli!
J'ai le même problème et je résous par ces étapes.
1.Allez dans votre répertoire de projet (cd votre chemin d'accès au projet)
2. Exécutez cette commande dans la commande Shell (install npm)
3.Exécutez votre projet (noeud app.js par exemple)