node.js教程由于缺lessbson模块而失败

背景信息

我试图按照这个教程: http : //cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/

我有一个mongo数据库在另一个Linux机器上运行… fwiw,我知道这是工作,因为我有一个PHP应用程序,可以连接和查询。

我不使用mongoose,而是和尚,因为这是教程所要求的。

以下是我的package.json文件的样子:

{ "name": "testapp", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "body-parser": "~1.13.2", "cookie-parser": "~1.3.5", "debug": "~2.2.0", "express": "~4.13.1", "mongodb": "^1.4.4", "monk": "^1.0.1", "morgan": "~1.6.1", "pug": "^2.0.0-beta4", "serve-favicon": "~2.3.0" } } 

问题

当我尝试运行testing节点应用程序时,出现以下错误消息:

 me@mydevbox:/var/www/html/node/testapp$ node app.js { Error: Cannot find module '../build/Release/bson' at Function.Module._resolveFilename (module.js:440:15) at Function.Module._load (module.js:388:25) at Module.require (module.js:468:17) at require (internal/module.js:20:19) at Object.<anonymous> (/var/www/html/node/testapp/node_modules/mongodb/node_modules/bson/ext/index.js:15:10) at Module._compile (module.js:541:32) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) code: 'MODULE_NOT_FOUND' } js-bson: Failed to load c++ bson extension, using pure JS version 

这是index.js文件的样子:

  3 try { 4 // Load the precompiled win32 binary 5 if(process.platform == "win32" && process.arch == "x64") { 6 bson = require('./win32/x64/bson'); 7 } else if(process.platform == "win32" && process.arch == "ia32") { 8 bson = require('./win32/ia32/bson'); 9 } else { 10 bson = require('../build/Release/bson'); 11 } 12 } catch(err) { 13 // Attempt to load the release bson version 14 try { 15 bson = require('../build/Release/bson'); 16 } catch (err) { 17 console.dir(err) 18 console.error("js-bson: Failed to load c++ bson extension, using pure JS version"); 19 bson = require('../lib/bson/bson'); 20 } 21 } 

我试过的东西:

基于stackoverflow.com上的其他post,我试图改变第15行看起来像这样:

 15 bson = require('bson'); 

我也试着运行这个命令:

  sudo npm install bson 

但是这并没有解决问题。

如果有帮助,我在我的盒子上search了“bson”,并提出了这些结果: http : //pastebin.com/WKQygGak

系统信息

Ubuntu 15.10

编辑1

 me@mydevbox:/var/www/html/node/testapp$ sudo apt-get install gcc make build-essential Reading package lists... Done Building dependency tree Reading state information... Done build-essential is already the newest version. gcc is already the newest version. make is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 

然后我运行以下命令:

http://pastebin.com/MDerppWB

第10行似乎有错误,但我不知道如何纠正它。

编辑2

这是我目前在我的npmconfiguration:

 me@mydevbox:/var/www/html/node/testapp$ npm config list ; cli configs user-agent = "npm/3.10.3 node/v6.3.1 linux x64" ; userconfig /home/me/.npmrc https-proxy = "http://10.1.1.11:8080/" proxy = "http://10.1.1.11:8080/" python = "python2.7" ; globalconfig /usr/etc/npmrc ; node bin location = /usr/bin/nodejs ; cwd = /var/www/html/node/testapp ; HOME = /home/me ; "npm config ls -l" to show all defaults. me@mydevbox:/var/www/html/node/testapp$ 

另外作为一个testing,我试图只是“sudo npm安装bson”,它与我在发布的pastebin中看到的相同的错误失败。

您可能需要构build要领,因为这里有一些c ++依赖关系。 请参考下面的答案或者只是执行以下操作。

 sudo apt-get install gcc make build-essential rm -rf node_modules npm cache clean npm install 

编辑:

这也可能是一个python问题。 确保在你的PATH中为Ubuntu安装了python 2.7,然后设置npm来查找python:

 npm config set python python2.7 

其他人有同样的问题,你发现这是一个解决scheme。 自从你已经确定你有构build要领之后,Python看起来就是下一步了。

编辑2:

附注..我知道你正在跟随一个教程..但为了将来的参考,我强烈build议使用本机mongo驱动程序 。 它比ORM的mongoose更快,并且不难使用(不是说mongoose难以使用,而只是没有灵活性或性能)。