Failed to load c++ bson extension

Javascriptnode.jsExpressMongooseDependencies

Javascript Problem Overview


A total node noob here. I've been trying to set up a sample node app but the following error keeps popping up every time I try to run:

>node app

Failed to load c++ bson extension, using pure JS version

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: failed to connect to [#$%67890 :27017]
    at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:553:74)
    at EventEmitter.emit (events.js:106:17)
    at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15)
    at EventEmitter.emit (events.js:98:17)
    at Socket.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:830:16
    at process._tickCallback (node.js:415:13)

Javascript Solutions


Solution 1 - Javascript

I guess you did not have the make tools available when you installed your mongodb library. I suggest you do

xcode-select --install (on a mac) or sudo apt-get install gcc make build-essential (on ubuntu)

and run

rm -rf node_modules
npm cache clean
npm install

OR just npm update based on @tobias comment (after installing build-essential)

npm update

Solution 2 - Javascript

I just resolved that.

When you install the mongoose module by npm, it does not have a built bson module in it's folder. In the file node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js, change the line

bson = require('../build/Release/bson');

to

bson = require('bson');

and then install the bson module using npm.

Solution 3 - Javascript

I have sorted the issue of getting the "Failed to load c++ bson extension" on raspbian(debian for raspberry) by:

npm install -g node-gyp

and then

npm update

Solution 4 - Javascript

I was unable to solve this

until now. First of all you have to have system packages mentioned by Pradeep Mahdevu. Those are:

xcode-select --install (on a mac) 

or

sudo apt-get install gcc make build-essential (on ubuntu)

Then I've installed node-gyp

npm install -g node-gyp 

like datadracer said but npm update also suggested by him is risky. It update all modules, which can be dangerous (sometimes API changes between versions).

I suggest going into node_modules/mongodb/node_modules/bson directory and from there use

node-gyp rebuild

That solved the problem for me.

Solution 5 - Javascript

A common problem is that node-gyp requires Python 2.x and if your system's python points to 3.x, it will fail to compile bson, without warning. You can fix this by setting a python global key in your npm config that points to the 2.x executable on your system. For example, on Arch Linux:

npm config -g set python "/usr/bin/python2"

Solution 6 - Javascript

On WIN 8.1

It seems I used a wrong version of mongoose in my package.json file.

I removed the line "mongoose" : "^3.8.15" from package.json.

CLI:

npm install mongoose --save

Now it says "mongoose": "^4.0.6" in package.json and the error I had is gone.

Solution 7 - Javascript

I'm running Ubuntu 14.04 and to fix it for me I had to create a symlink for node to point to nodejs as described here:

https://stackoverflow.com/questions/18130164/nodejs-vs-node-on-ubuntu-12-04

Once I did that I re-ran these commands:

rm -rf node_modules
npm cache clean
npm install

Solution 8 - Javascript

So in my case, I first tried to check under this directory /node_modules/mongoose/node_modules/, just to confirm that I have the bson module. I figured out that I did not have it in the first place, then I just run

npm install bson 
and then
npm update

All got sorted.Tried and tested in Ubuntu.

Solution 9 - Javascript

just wanted to say I also had the error

Failed to load c++ bson extension, using pure JS version

But with none of the other errors. I tried everything and turns out the mongodb drivers that I was specifying in the package.json file was incompatible with my version of MongoDB. I changed it to my latest version which was (1.4.34) and it worked!!!

Solution 10 - Javascript

sudo npm rebuild was what fixed it for me.

Solution 11 - Javascript

I finally corrected this error by updating my mongodb dependency version to ~2.0.36 in package.json.

 "dependencies": {
    "consolidate": "~0.9.1",
    "express": "3.x",
    "mongodb": "~2.0.36",
    "mongoose": "^4.1.12"
  }

Solution 12 - Javascript

Unfortunately, All the above answers are only half right.. Took a long time to figure this out..

Mongoose bson install via npm throws warning and causes the error...

npm install -g node-gyp

git clone https://github.com/mongodb/js-bson.git
cd js-bson
npm install
node-gyp rebuild

This works like magic!!

Solution 13 - Javascript

For me it only take to run these commands in my api directory:

rm -rf node_modules
npm cache clean 
npm install

Solution 14 - Javascript

I just ran:

sudo npm install bson

and

sudo npm update

and all become ok.

Solution 15 - Javascript

The bson extension message is just a warning, I get it all the time in my nodejs application.

Things to check:

  • MongoDB instance: Do you have a MongoDB instance running?
  • Config: Did you correctly configure Mongoose to your MongoDB instance? I suspect your config is wrong, because the error message spits out a very weird string for your mongodb server host name..

Solution 16 - Javascript

I fixed it by changing line 10 of:

/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js 

from:

bson = require('../build/Release/bson');

to:

bson = require('bson');

Solution 17 - Javascript

I fixed this problem on CentOS by

  • sudo yum groupinstall "Development Tools"
  • sudo npm install -g node-gyp
  • rm -r node_modules
  • npm cache clean
  • npm install

Solution 18 - Javascript

I also got this problem and it caused my sessions not to work. But not to break either...

I used a mongoose connection.

I had this:

var mongoose = require('mongoose');
var express = require('express');
var cookieParser = require('cookie-parser');
var expressSession = require('express-session');
var MongoStore = require('connect-mongo')(expressSession);
...
var app = express();
app.set('port', process.env.PORT || 8080);
app.use(bodyParser);
mongoose.connect('mongodb://localhost/TEST');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  console.log('MongoDB connected');
});


app.use(cookieParser());
app.use(expressSession({
  secret: 'mysecret',
  cookie: {
    maxAge: null,
    expires: moment().utc().add('days',10).toDate(),// 10 dagen
  },
  store: new MongoStore({
  db: 'TEST',
  collection: 'sessions',
}),

Very straightforward. But req.session stayed always empty.

rm -rf node_modules
npm cache clean
npm install

Did the trick. Watch out you dont have a 'mongodb' in your package.json! Just Mongoose and connect-mongo.

Solution 19 - Javascript

Here's how I fixed the problem on Ubuntu:

  1. ln -s /usr/bin/nodejs /usr/bin/node
  2. npm install node-gyp
  3. cd node_modules/mongodb/node_modules/bson
  4. node-gyp rebuild

Inspired by @mbochynski answer, but I had to create a symbolic link first, otherwise the rebuild failed.

Solution 20 - Javascript

i was having same trouble tried so many options but in the last npm intall in my mean app folder worked.

Solution 21 - Javascript

I had this problem because I was including the node_modules folder in my Git repository. When I rebuilt the node_modules on the other system it worked. One of them was running Linux, the other OS X. Maybe they had different processor architectures as well.

Solution 22 - Javascript

I had the same problem on my EC2 instance. I think the initial cause was because I had a Node instance running when I installed Mongo. I stopped the Node service and then ran

sudo npm update 

inside of the top level folder of my node project. This fixed the problem and everything was just like new

Solution 23 - Javascript

I was trying to run node on virtual machine (vagrant) shared folder. That was a problem. My host machine is Windows, installed node on Windows and worked like a charm. So if you are using virtual machine, just try to run node server on host machine.

Solution 24 - Javascript

I just had the same problem and literally nothing worked for me. The error was showing kerberos is causing the problem and it was one of the mongoose dependencies. Since I'm on Ubuntu, I thought there might be permission issues somewhere between the globally installed packages -- in /usr/lib/node_modules via sudo, and those which are on the user space.

I installed mongoose globally -- with sudo of course, and everything began working as expected.

P.S. The kerberos package now also is installed globally next to mongoose, however I can't remember if I did it deliberately -- while I was trying to solve the problem, or if it was there from the beginning.

Solution 25 - Javascript

I'm working on Docker with centOS 7, and encountered the same problem.

after looking around, and make several tries, I fixed this problem by installing mongodb, and mongodb-server

yum install mongodb mongodb-server

I don't think this is the best way to produce the minimal container. but I can limit the scope into the following packages

==============================================================================================================
 Package                          Arch              Version                          Repository          Size

==============================================================================================================
Installing:
 mongodb                          x86_64            2.6.5-2.el7                      epel                57 M
 mongodb-server                   x86_64            2.6.5-2.el7                      epel               8.7 M
Installing for dependencies:
 boost-filesystem                 x86_64            1.53.0-18.el7                    base                66 k
 boost-program-options            x86_64            1.53.0-18.el7                    base               154 k
 boost-system                     x86_64            1.53.0-18.el7                    base                38 k
 boost-thread                     x86_64            1.53.0-18.el7                    base                56 k
 gperftools-libs                  x86_64            2.1-1.el7                        epel               267 k
 libpcap                          x86_64            14:1.5.3-3.el7_0.1               updates            137 k
 libunwind                        x86_64            1.1-3.el7                        epel                61 k
 snappy                           x86_64            1.1.0-3.el7                      base                40 k

Solution 26 - Javascript

Solution 27 - Javascript

I was able to resolve by uninstalling and reinstalling monk package. Initial install seemingly had a corrupt mongodb/bson dependency.

Solution 28 - Javascript

On ubuntu 14.04 I needed to create a link in /usr/bin because /usr/bin/env was looking for /usr/bin/node.

ln -s /usr/bin/nodejs /usr/bin/node

The error messages can be found in the builderror.log in each directory so for the message:

> [email protected] install /usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson > (node-gyp rebuild 2> builderror.log) || (exit 0)

look at this file for more information about the exact problem:

/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/builderror.log

Solution 29 - Javascript

The only thing which helps me on Windows 7 (x64): https://stackoverflow.com/a/29714359/2670121

Reinstall node and python with x32 versions.
I spent a lot of time with this error:

> Failed to load c++ bson extension

and finally, when I installed module node-gyp (for building native addons) and even installed windows SDK with visual studio - nodejs didn't recognize assembled module bson.node as a module. After reinstalling the problem is gone.

Again, What does this error mean?

Actually, it's even not error. You still can use mongoose. But in this case, instead of fast native realization of bson module, you got js-realization, which is slower.

I saw many tips like: "edit path deep inside node_modules..." - which is totally useless, because it does not solve the problem, but just turned off the error messages.

Solution 30 - Javascript

For my case, I npm install all modules on my local machine (Mac), and I did not include node_modules in .gitignore and uploaded to github. Then I cloned the project to my aws, as you know, it is running Linux, so I got the errors. What I did is just include node_modules in .gitignore, and use npm install in my aws instance, then it works.

Solution 31 - Javascript

In our case, the reason that the c++ version bson was not found was because we were behind a corporate proxy and something in the BSON build process needs to reach out to fetch files. When we looked in node_modules/bson/builderror.log, we saw an error like this:

gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: connect ECONNREFUSED
gyp ERR! stack     at errnoException (net.js:904:11)
gyp ERR! stack     at Object.afterConnect [as oncomplete] (net.js:895:19)

Which suggested that the proxy might be the issue. Setting the http_proxy and https_proxy environment variables solved it.

Solution 32 - Javascript

Followint @user1548357 I decided to change the module file itself. So as to avoid the problems pointed out by the valid comments below I included my changes in a postinstall script so that I can set it and forget it and be assured that it will run when my modules are installed.

// package.json
"scripts": {
    // other scripts
    "postinstall": "node ./bson.fix.js"
},

and the script is:

// bson.fix.js
var fs = require('fs');
var file = './node_modules/bson/ext/index.js'
fs.readFile(file, 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }
  var result = data.replace(/\.\.\/build\/Release\/bson/g, 'bson');
  fs.writeFile(file, result, 'utf8', function (err) {
     if (err) return console.log(err);
     console.log('Fixed bson module so as to use JS version');
  });
});

Solution 33 - Javascript

easily kick out the problem by just add this line both try and catch block path: node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js

bson = require('bson');  instead 

bson = require('./win32/ia32/bson');
bson = require('../build/Release/bson'); 

That is all!!!

Solution 34 - Javascript

If the bson extension wasn't the reason, I guessed the other reason for "failed to connect" would be the user id's. So I created a new database and added a user for the database, with a password for that user (note: not mongolab account password). I updated those on my code and voila! It worked. Duh right? :D

Solution 35 - Javascript

I also encountered the same problem and I'm a Mac OSX user. Basically, you need to make sure you have installed the Xcode and also the "Command Line Tools" within the Xcode.

Xcode is free and can be downloaded over here: https://developer.apple.com/xcode/downloads/

After you have installed the Xcode, open it and click "Preference" in the pull down menu, and click the "Downloads" icon. Make sure you have the "Command Line Tools" installed.

Then run the following commands like all the other users mentioned above:

rm -rf node_modules
npm cache clean
npm install

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
QuestionThejaView Question on Stackoverflow
Solution 1 - JavascriptPradeep MahdevuView Answer on Stackoverflow
Solution 2 - Javascriptuser1548357View Answer on Stackoverflow
Solution 3 - JavascriptDaniele UraniaView Answer on Stackoverflow
Solution 4 - JavascriptmbochynskiView Answer on Stackoverflow
Solution 5 - JavascriptneverfoxView Answer on Stackoverflow
Solution 6 - JavascriptOakView Answer on Stackoverflow
Solution 7 - JavascriptAnthonyView Answer on Stackoverflow
Solution 8 - JavascriptStevenView Answer on Stackoverflow
Solution 9 - Javascriptthe pickleView Answer on Stackoverflow
Solution 10 - JavascriptZach DahlView Answer on Stackoverflow
Solution 11 - JavascriptFeezy23View Answer on Stackoverflow
Solution 12 - JavascriptRama PrashanthView Answer on Stackoverflow
Solution 13 - JavascriptAdam GądziakView Answer on Stackoverflow
Solution 14 - Javascriptcn007bView Answer on Stackoverflow
Solution 15 - JavascripthendrikswanView Answer on Stackoverflow
Solution 16 - JavascriptjorgefpastorView Answer on Stackoverflow
Solution 17 - JavascriptliudongView Answer on Stackoverflow
Solution 18 - JavascriptKLoozenView Answer on Stackoverflow
Solution 19 - JavascriptcollimarcoView Answer on Stackoverflow
Solution 20 - Javascriptashishkumar148View Answer on Stackoverflow
Solution 21 - JavascriptmarcmtlcaView Answer on Stackoverflow
Solution 22 - JavascriptLloyd BanksView Answer on Stackoverflow
Solution 23 - JavascriptLukas LiesisView Answer on Stackoverflow
Solution 24 - JavascriptMahdiView Answer on Stackoverflow
Solution 25 - JavascriptbolerovtView Answer on Stackoverflow
Solution 26 - JavascriptdbaschView Answer on Stackoverflow
Solution 27 - JavascriptjohnkopView Answer on Stackoverflow
Solution 28 - JavascriptBobView Answer on Stackoverflow
Solution 29 - JavascriptMaksim NesterenkoView Answer on Stackoverflow
Solution 30 - JavascriptJieView Answer on Stackoverflow
Solution 31 - JavascriptMatt M.View Answer on Stackoverflow
Solution 32 - JavascriptMike MView Answer on Stackoverflow
Solution 33 - Javascriptmallikarjuna gvView Answer on Stackoverflow
Solution 34 - JavascriptThejaView Answer on Stackoverflow
Solution 35 - JavascriptSunny IpView Answer on Stackoverflow