node.js cannot find module 'mongodb'

node.jsMongodb

node.js Problem Overview


I am going through my first node.js project. I've installed mongodb, have a server.js file, and when I try to run it I get this error

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)

I am quite certain I have mongodb installed, I am new to unix coming from a C# windows background, but I think this is a path not being configured properly?

node.js Solutions


Solution 1 - node.js

The error you are getting indicates that the NPM package for MongoDB is not correctly installed.

The fix here depends on how you plan to leverage NPM. The NPM package manager operates has two different modes of operation: local and global.

The first (and default) mode is "local".

If you go to the folder with server.js you will see a sub-folder named node_modules. Under that folder will be a mongodb folder. If that folder is not present, then the mongodb module is not installed on that path.

To correct this, cd to that folder and type npm install mongodb. When the process is done you should have the node_modules/mongodb folder available.

You can also install MongoDB package globally using npm install -g mongodb. This is useful if you are using lots of node.js command-line stuff, but less useful if you are deploying the whole thing.

Side Note: there is an evolving standard around package.json. The package.json is a standardized way of including all dependencies for a given module. This allows you to run npm update or npm install at the root of a project / package and effectively "pull in" all of the dependencies. This greatly simplifies the deployment process and the process of keeping your dependencies in-line.

Solution 2 - node.js

After trying for some time to install it without success (since I'm new to mongo and node), I was missing the npm link step indeed. So just to summarize, I did this:

  1. npm install mongodb -g
  2. cd /path/to/my/app/folder
  3. npm link mongodb

With that in place, I could do this in my application file: require('mongodb').

Here are some references, in case you need them:

Solution 3 - node.js

This Problem would have caused by one among the below reasons.

  1. You have not installed mongodb module.

  2. You have installed mongodb in global context but not linked to current application.

Solution

  1. Traverse to application top directory and execute npm install mongodb , this will install mongodb module, and your project will automatically detect it.

or

  1. Execute npm install mongodb -g to install mongo DB module globally and then Ttaverse to application top directory and link using command npm link mongodb command.

Usefull Links

http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

https://npmjs.org/doc/link.html

Solution 4 - node.js

You can do either of two things to make it run :-

  1. Install mongodb globally with below steps :-

a)npm install mongodb -g

b) Go to your app directory, where module.js is located and then run

npm link mongodb

Explanation :- When you install a package globally via npm, it is downloaded to global node_module folder. For me(Mac user), it's under /usr/local/lib/node_modules/mongodb. We link this to that directory from where you are trying to run module.js.

  1. Another approach is to install mongodb locally, not globally via

npm install mongodb

After following either of these, you will be seeing node_modules --> mongodb folder under the 'module.js' directory, which means mongodb has been successfully installed.

Solution 5 - node.js

Install mongodb globally with below steps :-

a) npm install mongodb -g

b) Go to your app directory, where module.js is located and then run

npm link mongodb

Explanation :- When you install a package globally via npm, it is downloaded to global node_module folder. For me(Mac user), it's under /usr/local/lib/node_modules/mongodb. We link this to that directory from where you are trying to run module.js.

Solution 6 - node.js

Error

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)

Solved

> npm install mongodb > > > Edit package.json = "mongodb": "^3.0.1", change "mongodb": "3.0.1",

Solution 7 - node.js

I am new to MongoDB. After spending hours of installing mongodb through npm, I finally got the picture. See, there are actually three "mongodb" you need to deal with (I am using OSX):

The driver used in NodeJS: That is: var mongo = require('/usr/local/lib/node_modules/mongodb'). Or, you may use "npm link" as mentioned by earlier post in order to avoid the long path. Command "npm install -g mongodb" installs the mongodb driver under /usr/local/lib (this is what "-g" means). This guy took hours and hours to install, don't know why, so be patient!

The mongodb utilities (i.e., the UNIX executable commands). You download them from http://www.mongodb.org/downloads. It contains the mongod command that allows you to start the mongodb database. So in my /usr/local/bin, I created a symbolic link, mongod, pointing to /usr/local/lib/node_modules/mongodb-osx-x86_64-2.6.7/bin/mongod, so I can execute mongod from anywhere.

The mongodb database pointed by /data/db. So under /data, I created a symbolic link, db, pointing to /Users/your_user_id/Database/mongodb (or anywhere you like to put it), in which mongodb is an empty directory you may create via mkdir.

Because you have installed the #2 mongodb above, so you can execute mongod at the command line, which will create and start the database under mongodb #3.

Because you have mongodb #1 installed by npm, so now you can require it in your NodeJS program.

Job done!

Solution 8 - node.js

I got the same Problem and I solve by these steps.

1.Go to Your Project Dir.(cd your Project Path)

2.Run this command in command shell( install npm)

3.Run your Project (node app.js for example)

Solution 9 - node.js

May be you are trying to run other then project path.I have faced the same problem and got resolved by following few steps given below.

1.) Go to your project directory using command shell "cd /project path".

2.) Now Run your project.

Solution 10 - node.js

My problem was that when I originally created my package.json file, I had made the "version" key correspond to a value of "1.0.0". When I changed that to version value to reflect the version I wanted to use under my "dependencies" key, I got rid of the error. There is a picture below of the potential fix. Notice how the "version" and "mongodb" under "dependencies" match. enter image description here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionEddieView Question on Stackoverflow
Solution 1 - node.jsGates VPView Answer on Stackoverflow
Solution 2 - node.jsJair ReinaView Answer on Stackoverflow
Solution 3 - node.jsVishwanath gowda kView Answer on Stackoverflow
Solution 4 - node.jssatyam kumarView Answer on Stackoverflow
Solution 5 - node.jsPuneet KumarView Answer on Stackoverflow
Solution 6 - node.jsjamsheedView Answer on Stackoverflow
Solution 7 - node.jsDaniel C. DengView Answer on Stackoverflow
Solution 8 - node.jsmangeshView Answer on Stackoverflow
Solution 9 - node.jsAnkush ChaudharyView Answer on Stackoverflow
Solution 10 - node.jsCopyLeftView Answer on Stackoverflow