Учебник по node.js не работает из-за отсутствия модуля bson

Исходная информация

Я пытаюсь следовать этому руководству: http://cwbuecheler.com/web/tutorials/2014/restful-web-app-node-express-mongodb/

У меня есть база данных mongo, работающая на другом компьютере с Linux... и, кстати, я знаю, что она работает, потому что у меня есть приложение php, которое может подключаться и запрашивать.

Я не использую мангуста... но монаха, так как это то, к чему призывает учебник.

Вот как выглядит мой файл 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"
  }
}

~

проблема

Когда я пытаюсь запустить приложение тестового узла, я получаю следующее сообщение об ошибке:

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 }

Что я пробовал:

Основываясь на других сообщениях на stackru.com, я попытался изменить строку 15, чтобы она выглядела так:

15                 bson = require('bson');

Я также попытался запустить команду:

 sudo npm install bson 

Но это не решило проблему.

На случай, если это поможет, я выполнил поиск "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

Это то, что у меня сейчас есть в моей конфигурации npm:

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$ 

Кроме того, в качестве теста я попытался просто "sudo npm install bson", и он потерпел неудачу с теми же ошибками, которые я вижу в пастбине, который я разместил.

1 ответ

Возможно, вам нужны основы сборки, потому что здесь есть некоторая зависимость от C++. Пожалуйста, обратитесь к следующему ответу или просто сделайте следующее.

sudo apt-get install gcc make build-essential

rm -rf node_modules
npm cache clean
npm install

Редактировать:

Это также может быть проблемой с питоном. Убедитесь, что Python 2.7 установлен для Ubuntu в вашем PATH, а затем настройте npm для поиска python:

npm config set python python2.7

Другие, имеющие ту же проблему, что и вы, нашли, что это решение. Python выглядит следующим шагом после того, как вы установили, что у вас есть основы сборки.

Изменить 2:

Примечание: я знаю, что вы следуете учебнику... но для дальнейшего использования я настоятельно рекомендую использовать родной драйвер монго. Он быстрее, чем ORM, как мангуста, и не сложен в использовании (не говоря уже о том, что мангуста сложно использовать, но он не такой гибкий и производительный).

Другие вопросы по тегам