Failed to load c++ bson extension, using pure JS version
发布于 11 年前 作者 kazaff 32236 次预览 最后一次回复是 11 年前 来自
node v0.10.25 ├─┬ mongoose@3.8.7 │ ├── hooks@0.2.1 │ ├─┬ mongodb@1.3.23 │ │ ├── bson@0.2.5 │ │ └── kerberos@0.0.3 │ ├── mpath@0.1.1 │ ├── mpromise@0.4.3 │ ├─┬ mquery@0.5.2 │ │ └── debug@0.7.4 │ ├── ms@0.1.0 │ ├── muri@0.3.1 │ ├── regexp-clone@0.0.1 │ └── sliced@0.0.5
测试代码: var mongoose = require(‘mongoose’); mongoose.connect(‘mongodb://localhost/test’);
var Cat = mongoose.model('Cat', { name: String });
var kitty = new Cat({ name: 'Zildjian' });
kitty.save(function (err) {
if (err) // ...
console.log('meow');
});
执行代码,可以插入到mongodb中,只不过在控制台会报个警告:
Failed to load c++ bson extension, using pure JS version
搜了一大圈,发现这是个普遍存在的问题,不知道有什么解决办法没有?
8 回复
我单独安装bson模块,发现报错信息:
这是否说明错误原因?我查了一下mac下默认是安装了clang的,可为什么还是找不到呢?
遇到了同样的问题。 我是在Node-webkit环境里用mongoose的。
功能一切正常,只是会在console里报这样的错。
楼主找到解决办法了吗?
没有,虽然知道这个只是个警告,但是还是很恶心啊~~
github上也有不少人问,但是并没找到明确的一个解答~
@kazaff pure js环境下一切功能还是可以正常运行的。 作为有强迫症的我,还是做了点小伎俩把那个警告给取消了。 打开文件夹
...\node_modules\mongoose\node_modules\mongodb\node_modules\bson\ext下的index.js文件,把第13行的console.error("Failed to load c++ bson extension, using pure JS version");给注释掉,或者就直接用pure js环境bson = require('../lib/bson/bson');不需要上面各种平台的判断。github上有人说是mongodb官方的bson驱动有问题。
@Just1n 小伙儿果然够狠啊
@kazaff 需要用
nw-gyprebuild一下。 然后把ext文件夹下的index.js文件里的bson = require('./win32/ia32/bson');和bson = require('./win32/x64/bson');全部换成bson = require('../build/Release/bson');,主要是nw-gyp编译的时候没有分32位和64位。注,目前只对我遇到问题的环境有效: Windows8.1 VS2013 node v0.10.26 node-webkit 0.9.2 mongoose
已经解决了: http://stackoverflow.com/posts/22242472/revisions 这个主要是通过 npm install mongoose 时,mongoose 并没有编译 bson, 引起的,通过 npm install bson 就会编译它,并个性 mongoose 中对应的引用代码即可。 按上面给出方式修改后就可以了
When you installed the mongoose module by npm, it hasn’t build bson module within it’s forlder. see the file ‘node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js’
bson = require(’…/build/Release/bson’);
So just change it to bson = require(‘bson’);
and install bson module by npm.