node.js - 使用纯JS版本,没有 mongoose,没有 express,仅仅 node 驱动程序,node.js 加载 C++ bson扩展失败

  显示原文与译文双语对照的内容
100 0

通过使用 mongo shell 创建数据库并将文档记录到控制台,然后编写一个非常简单的nodejs程序来访问集合。


var mongodb = require('mongodb');



var db = new mongodb.Db('mcfly', new mongodb.Server('127.0.0.1', 27017), {safe: true});



db.open(function(err) {


 db.collection('mathpeeps', function(err, collection){


 collection.find().toArray(function(err, items){


 console.log(items)


 });


 });


});



但是当我运行程序时,它给了我:


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


[ { _id: 53ab29bbdb49942ae25b5201,


 firstname: 'Leonard',


 lastname: 'Euler',


 born: 1707 },


 { _id: 53ab29fedb49942ae25b5202,


 firstname: 'Karl',


 lastname: 'Gauss' } ]



我已经搜索并搜索了"js: 载入 C++ bson扩展失败,使用纯JS版本"除了在我没有使用的情况下对其他问题的回答之外,尝试了所有其他的问题。

我目前尝试的一些内容:


sudo apt-get install gcc make build-essential


rm -rf node_modules


npm cache clean


npm install



( 但是这个练习甚至不使用 package.json 文件)

我尝试使用最新版本安装节点 mongodb

我试过


npm install -g node-gyp



我在这里尝试了一个答案无法加载 C++ bson扩展插件:

进入 node_modules/mongodb/node_modules/bson 目录并使用

 
node-gyp rebuild



 

产生了:


gyp info it worked if it ends with ok


gyp info using node-gyp@0.13.1


gyp info using node@0.11.9-pre | linux | x64


gyp ERR! configure error 


gyp ERR! stack Error:"pre" versions of node cannot be installed, use the --nodedir flag instead


gyp ERR! stack at install (/usr/local/lib/node_modules/node- gyp/lib/install.js:66:16)


gyp ERR! stack at Object.self.commands.(anonymous function) [as install] (/usr/local/lib/node_modules/node-gyp/lib/node-gyp.js:66:37)


gyp ERR! stack at getNodeDir (/usr/local/lib/node_modules/node- gyp/lib/configure.js:152:20)


gyp ERR! stack at/usr/local/lib/node_modules/node-gyp/lib/configure.js:95:9


gyp ERR! stack at ChildProcess.exithandler (child_process.js:659:7)


gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:106:17)


gyp ERR! stack at maybeClose (child_process.js:773:16)


gyp ERR! stack at Socket.<anonymous> (child_process.js:986:11)


gyp ERR! stack at Socket.EventEmitter.emit (events.js:103:17)


gyp ERR! stack at Pipe.close (net.js:458:12)


gyp ERR! System Linux 3.13.0-29-generic


gyp ERR! command"node""/usr/local/bin/node-gyp""rebuild"


gyp ERR! cwd/home/nathaniel/node_modules/mongodb/node_modules/bson


gyp ERR! node -v v0.11.9-pre


gyp ERR! node-gyp -v v0.13.1


gyp ERR! not ok 



我在这里看到了一个答案,无法加载 C++ bson扩展,使用纯JS版本说:

"听起来你在使用npm安装 bson MODULE 时没有安装 gcc/g++/make/python 2.x 。 尝试先安装它们,然后使用npm重新安装 bson 。"

但是这个答案没有被选中,我也不知道这意味着什么是一个严重的noob 。

我真的想继续学一下 mongodb,但我不想让一些包 Bug 出现问题,让我错误地认为我正在做错误。 我现在想把这个清理干净。

我还注意到,许多它的他人发布这个问题( 没有mongoose或者直接参与) 并没有选择答案,或者回答他们的问题。

我正在运行 Ubuntu 14.04和 node v0.11.9 -pre

任何帮助将得到极大的赞赏 !

时间: 原作者:

74 1

我认为这个错误很清楚: Error:"pre" versions of node cannot be installed, use the --nodedir flag instead 你应该提供你安装的root node 源目录的路径,或者安装/使用实际的node 发布( v0.11.13是最新的不稳定版本,v0.10.29是本文撰写的最新稳定版本),然后重试 npm install/node-gyp rebuild

它要求 node 源目录的原因是,节点gyp必须从 nodejs.org 站点下载 node 源 tarball,才能编译插件( 它需要 C++ 头文件等) 。 但是,如果你有一个 node 版本的预先发布,节点无法知道要下载什么源代码树。

原作者:
...