无法加载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上解决问题的方法:
-
ln -s /usr/bin/nodejs /usr/bin/node
-
npm install node-gyp
-
cd node_modules/mongodb/node_modules/bson
-
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
对于Windows 7.1,这些指导帮助我修复了我的编译环境:
https://github.com/mongodb/js-bson/issues/58#issuecomment-68217275
http://christiankvalheim.com/post/diagnose_installation_problems/
我能够通过卸载和重新安装和尚包来解决。 初始安装似乎有一个腐败的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