无法加载c ++ bson扩展

总节点noob在这里。 我一直在尝试设置一个示例节点应用程序,但每次尝试运行时都会popup以下错误消息:

节点应用程序

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) 

我想你在安装mongodb库时没有make工具。 我build议你这样做

xcode-select --install (在Mac上)或sudo apt-get install gcc make build-essential (在Ubuntu上)

并运行

 rm -rf node_modules npm cache clean npm install 

或者只是基于@tobias的npm更新评论(在安装build-essential之后)

 npm update 

我刚刚解决了。

当您通过npm安装mongoose模块时,它的文件夹中没有内置的bson模块。 在文件node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js ,更改行

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

 bson = require('bson'); 

然后使用npm安装bson模块。

我已经整理了在raspbian(debian for raspberry)上获得“Failed to load c ++ bson extension”的问题:

 npm install -g node-gyp 

接着

 npm update 

我无法解决这个问题

到现在。 首先你必须有Pradeep Mahdevu提到的系统软件包。 那些是:

 xcode-select --install (on a mac) 

要么

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

然后我安装了node-gyp

 npm install -g node-gyp 

像datadracer说,但npm更新也build议他有风险。 它更新所有模块,这可能是危险的(有时在版本之间的API更改)。

我build议进入node_modules / mongodb / node_modules / bson目录并从那里使用

 node-gyp rebuild 

这解决了我的问题。

一个常见的问题是node-gyp需要Python 2.x,如果你的系统的python指向3.x,它将无法编译bson ,没有警告。 您可以通过在您的npmconfiguration中指定您的系统上的2.x可执行文件来设置python全局密钥来解决此问题。 例如,在Arch Linux上:

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

在WIN 8.1上

似乎我在我的package.json文件中使用了一个错误版本的mongoose。

我从package.json中删除了“mongoose”行:“^ 3.8.15”

CLI:npm安装mongoose – 保存

现在它说“mongoose”:package.json中的“^ 4.0.6”,我所拥有的错误消失了。

我正在运行Ubuntu 14.04并为我修复它,我必须创build一个符号链接节点指向nodejs如下所述:

在Ubuntu 12.04上的nodejs vs node

一旦我这样做,我重新运行这些命令:

 rm -rf node_modules npm cache clean npm install 

只是想说我也有错误

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

但没有其他的错误。 我尝试了一切,结果我在package.json文件中指定的mongodb驱动程序与我的MongoDB版本不兼容。 我改变了我的最新版本是(1.4.34),它的工作!

所以在我的情况下,我第一次尝试检查此目录/ node_modules / mongoose / node_modules / ,只是为了确认我有bson模块。 我知道,我没有摆在首位,然后我就跑了

  npm安装bson 

接着

  npm更新 

所有得到sorting。在Ubuntu中尝试和testing。

sudo npm rebuild是为我修复的。

我最终通过在package.json中将我的mongodb依赖版本更新为“〜2.0.36”来纠正了这个错误。

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

不幸的是,所有上述的答案只是一半的权利..花了很长时间来弄清楚这一点..

mongoose安装通过npm抛出警告,并导致错误…

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

这工作像魔术!

bson扩展消息只是一个警告 ,我一直在我的nodejs应用程序中得到它。

检查事项:

  • MongoDB实例 :你有一个MongoDB实例在运行吗?
  • configuration :你有没有正确地configurationMongoose到你的MongoDB实例? 我怀疑你的configuration是错误的,因为错误消息吐出一个非常奇怪的string为您的mongodb服务器主机名称..

对我来说,只需要在我的api目录中运行这些命令:

 rm -rf node_modules npm cache clean npm install 

我刚刚跑:

 sudo npm install bson 

 sudo npm update 

一切都变好了。

我也有这个问题,并导致我的会议不工作。 但不要打破…

我用了一个mongoose连接。

我有这个:

 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', }), 

非常简单。 但是请求总是空着。

 rm -rf node_modules npm cache clean npm install 

诀窍了。 注意你的package.json中没有“mongodb”! 只是mongoose和连接mongo。

我在CentOS上解决了这个问题

  • sudo yum groupinstall“开发工具”
  • sudo npm install -g node-gyp
  • rm -r node_modules
  • npmcaching清理
  • npm安装

我的EC2实例有同样的问题。 我认为最初的原因是因为我在安装Mongo时运行了一个Node实例。 我停止了Node服务,然后跑了

 sudo npm update 

在我的节点项目的顶层文件夹内。 这解决了问题,一切都像新的一样

以下是我在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

灵感来自@mbochynski答案,但我必须先创build一个符号链接,否则重build失败。

我修改了/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js的第10行:

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

至:

 bson = require('bson'); 

我有同样的麻烦尝试了这么多的select,但在我的意思是应用程序文件夹工作最后npm intall

我有这个问题,因为我包括我的Git仓库中的node_modules文件夹。 当我重build其他系统上的node_modules它的工作。 其中一个是运行Linux,另一个是OS X.也许他们有不同的处理器架构。

如果bson扩展名不是原因,我猜想“失败连接”的另一个原因是用户名。 所以我创build了一个新的数据库,并为该数据库添加了一个用户,并为该用户提供了一个密码( 注意 :不是mongolab帐户密码)。 我更新了我的代码,瞧! 有效。 对吧? :d

我也遇到了同样的问题,我是Mac OSX用户。 基本上,你需要确保你已经在Xcode中安装了Xcode和“命令行工具”。

Xcode是免费的,可以在这里下载: https : //developer.apple.com/xcode/downloads/

安装Xcode之后,打开它并在下拉菜单中单击“首选项”,然后单击“下载”图标。 确保你已经安装了“命令行工具”。

然后像上面提到的所有其他用户一样运行以下命令:

 rm -rf node_modules npm cache clean npm install 

我试图在虚拟机(vagrant)共享文件夹上运行节点。 这是一个问题。 我的主机是Windows,在Windows上安装节点,像魅力一样工作。 所以如果你使用的是虚拟机,试试在主机上运行节点服务器。

我只是有同样的问题,没有为我工作。 错误显示kerberos是造成这个问题,这是mongoose依赖之一。 由于我在Ubuntu上,我以为在全局安装的软件包(通过sudo/usr/lib/node_modules和用户空间的软件包之间可能存在权限问题。

我在全球安装了mongoose ,当然还有sudo ,一切都按预期开始。

PS kerberos软件包现在也安装在mongoose旁边,但是我不记得是不是故意这样做 – 当我试图解决问题的时候,或者是从一开始就是这样的。

我正在用centOS 7和Docker一起工作,遇到了同样的问题。

环顾四周后,做了几次尝试,我通过安装mongodb和mongodb-server来解决了这个问题

 yum install mongodb mongodb-server 

我不认为这是生产最小容器的最佳方法。 但我可以将范围限制在下列包中

 ============================================================================================================== 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 

我能够通过卸载和重新安装和尚包来解决。 初始安装似乎有一个腐败的mongodb / bson依赖。

在Ubuntu 14.04上,我需要在/ usr / bin中创build一个链接,因为/ usr / bin / env正在寻找/ usr / bin / node

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

错误消息可以在每个目录的builderror.log中find,以便消息:

bson@0.2.21 install / usr / local / lib / node_modules / mongodb / node_modules / mongodb-core / node_modules / bson(node-gyp rebuild 2> builderror.log) (出口0)

查看此文件以获取有关确切问题的更多信息

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