Не удалось загрузить расширение С++ bson

Всего node noob здесь. Я пытаюсь создать образец приложения node, но при каждом попытке запуска появляется следующая ошибка:

node приложение

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)

Ответ 1

Я думаю, у вас не было инструментов make, доступных при установке вашей библиотеки mongodb. Я предлагаю вам сделать

xcode-select --install (на маке) или sudo apt-get install gcc make build-essential (на ubuntu)

и запустите

rm -rf node_modules
npm cache clean
npm install

ИЛИ просто обновление npm на основе комментария @tobias (после установки build-essential)

npm update

Ответ 2

Я просто решил, что.

Когда вы устанавливаете модуль mongoose на npm, в нем нет встроенного модуля bson. В файле node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js измените строку

bson = require('../build/Release/bson');

к

bson = require('bson');

а затем установите модуль bson с помощью npm.

Ответ 3

Я отсортировал вопрос о том, как получить "Не удалось загрузить расширение С++ bson" на raspbian (debian for maspberry):

npm install -g node-gyp

а затем

npm update

Ответ 4

Мне не удалось решить эту проблему

до сих пор. Прежде всего, вы должны иметь системные пакеты, упомянутые Прадипом Маддеву. Это:

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, также предложенное им, является рискованным. Он обновляет все модули, что может быть опасно (иногда API меняется между версиями).

Я предлагаю перейти в каталог node_modules/mongodb/node_modules/bson и оттуда использовать

node-gyp rebuild

Это решило проблему для меня.

Ответ 5

Общей проблемой является то, что node -gyp требует Python 2.x, и если ваша система python указывает на 3.x, она не сможет скомпилировать bson без предупреждения. Вы можете исправить это, установив глобальный ключ python в конфигурацию npm, указывающий на исполняемый файл 2.x в вашей системе. Например, в Arch Linux:

npm config -g set python "/usr/bin/python2"

Ответ 6

На WIN 8.1

Кажется, я использовал неправильную версию mongoose в своем файле package.json.

Я удалил строку "mongoose" : "^3.8.15" из package.json.

CLI:

npm install mongoose --save

Теперь в package.json написано "mongoose": "^4.0.6", и ошибка, с которой я столкнулся, исчезла.

Ответ 7

Я запускаю Ubuntu 14.04 и исправляю его для меня. Мне нужно было создать символическую ссылку для node, чтобы указать на nodejs, как описано здесь:

nodejs vs node на ubuntu 12.04

Как только я это сделал, я перезапустил следующие команды:

rm -rf node_modules
npm cache clean
npm install

Ответ 8

просто хотел сказать, что у меня также была ошибка

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

Но ни одна из других ошибок. Я пробовал все, и, как оказалось, драйверы mongodb, которые я указывал в файле package.json, были несовместимы с моей версией MongoDB. Я изменил его на мою последнюю версию, которая была (1.4.34), и это сработало!!!

Ответ 9

Итак, в моем случае я сначала попытался проверить этот каталог /node_modules/mongoose/node_modules/, просто чтобы подтвердить, что у меня есть bson модуль. Я понял, что у меня его нет, во-первых, я просто запустил

npm install bson 

а затем

npm update

Все отсортированы. Протестировано и протестировано в Ubuntu.

Ответ 10

sudo npm rebuild было для меня исправлено.

Ответ 11

Наконец, я исправил эту ошибку, обновив версию зависимости mongodb до ~ 2.0.36 в package.json.

 "dependencies": {
    "consolidate": "~0.9.1",
    "express": "3.x",
    "mongodb": "~2.0.36",
    "mongoose": "^4.1.12"
  }

Ответ 12

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

Mongoose bson устанавливает через предупреждение npm throws и вызывает ошибку...

npm install -g node-gyp

git clone https://github.com/mongodb/js-bson.git
cd js-bson
npm install
node-gyp rebuild

Это работает как магия!!

Ответ 13

Сообщение расширения bson - это просто предупреждение, я получаю его все время в приложении nodejs.

Что нужно проверить:

  • Экземпляр MongoDB. У вас работает экземпляр MongoDB?
  • Конфигурация. Вы правильно настроили Mongoose для своего экземпляра MongoDB? Я подозреваю, что ваш конфиг неправильный, потому что сообщение об ошибке выплескивает очень странную строку для вашего имени хоста сервера mongodb..

Ответ 14

Мне нужно только выполнить эти команды в моем каталоге api:

rm -rf node_modules
npm cache clean 
npm install

Ответ 15

Я только что побежал:

sudo npm install bson

и

sudo npm update

и все станет нормально.

Ответ 16

У меня также возникла эта проблема, и это не помогло моим сеансам. Но не сломать...

Я использовал соединение мангуста.

У меня было это:

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',
}),

Очень просто. Но req.session оставался всегда пустым.

rm -rf node_modules
npm cache clean
npm install

Сделал трюк. Остерегайтесь того, что у вас нет "mongodb" в вашем пакете. Json! Просто Mongoose и connect-mongo.

Ответ 17

Я исправил это, изменив строку 10 из:

/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js 

от:

bson = require('../build/Release/bson');

в:

bson = require('bson');

Ответ 18

Я исправил эту проблему на CentOS на

  • sudo yum groupinstall "Средства разработки
  • sudo npm install -g node -gyp
  • rm -r node_modules
  • npm cache clean
  • npm install

Ответ 19

У меня была такая же проблема на моем экземпляре EC2. Я думаю, что первоначальная причина была в том, что у меня был экземпляр Node, когда я установил Mongo. Я остановил службу Node, а затем запустил

sudo npm update 

внутри папки верхнего уровня моего проекта Node. Это фиксировало проблему, и все было как новый

Ответ 20

Вот как я исправил проблему на Ubuntu:

  • ln -s /usr/bin/nodejs /usr/bin/node
  • npm install node-gyp
  • cd node_modules/mongodb/node_modules/bson
  • node-gyp rebuild

Вдохновленный @mbochynski ответом, но сначала мне нужно было создать символическую ссылку, иначе восстановление не получилось.

Ответ 21

У меня была такая же проблема, как и у многих опций, но в последнем npm intall в моей средней папке приложения работала.

Ответ 22

У меня была эта проблема, потому что я включил папку node_modules в мой репозиторий Git. Когда я перестроил node_modules на другой системе, он сработал. Один из них работал под управлением Linux, другой OS X. Возможно, у них также были разные архитектуры процессоров.

Ответ 23

Если расширение bson не было причиной, я догадался, что другой причиной "не удалось подключиться" будет идентификатор пользователя. Поэтому я создал новую базу данных и добавил пользователя для базы данных с паролем для этого пользователя ( note: не пароль учетной записи mongolab). Я обновил их на своем коде и вуаля! Это сработало. Дух прав?: D

Ответ 24

Я также столкнулся с той же проблемой, и я являюсь пользователем Mac OSX. В принципе, вам нужно убедиться, что вы установили Xcode, а также "Инструменты командной строки" в Xcode.

Xcode является бесплатным и может быть загружен здесь: https://developer.apple.com/xcode/downloads/

После того, как вы установили Xcode, откройте его и нажмите "Предпочтение" в раскрывающемся меню и нажмите значок "Загрузки". Убедитесь, что у вас установлены инструменты командной строки.

Затем запустите следующие команды, как и все остальные пользователи, упомянутые выше:

rm -rf node_modules
npm cache clean
npm install

Ответ 25

Я пытался запустить node в общей папке виртуальной машины (бродяга). Это была проблема. Мой хост-компьютер - это Windows, установленный node для Windows и работающий как шарм. Поэтому, если вы используете виртуальную машину, просто попробуйте запустить сервер node на хост-машине.

Ответ 26

У меня была такая же проблема, и буквально ничего не работало для меня. Ошибка показывала, что kerberos вызывает проблему, и это была одна из зависимостей mongoose. Поскольку я нахожусь на Ubuntu, я думал, что могут существовать проблемы с разрешениями между глобально установленными пакетами - в /usr/lib/node_modules через sudo и теми, которые находятся в пользовательском пространстве.

Я установил mongoose по всему миру - с помощью sudo, конечно, и все начало работать как ожидалось.

P.S. Пакет kerberos теперь также устанавливается глобально рядом с mongoose, однако я не могу вспомнить, сделал ли я это намеренно - пока я пытался решить проблему или был там с самого начала.

Ответ 27

Я работаю над Docker с centOS 7 и сталкивался с той же проблемой.

после осмотра и нескольких попыток я исправил эту проблему, установив 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

Ответ 29

Я смог решить, удалив и переустановив пакет monk. Первоначальная установка, казалось бы, имела коррумпированную зависимость mongodb/bson.

Ответ 30

В Ubuntu 14.04 мне нужно было создать ссылку в /usr/bin, потому что /usr/bin/env искал /usr/bin/node.

ln -s /usr/bin/nodejs /usr/bin/node

Сообщения об ошибках можно найти в builderror.log в каждом каталоге, поэтому для сообщения:

[email protected] install/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson (node-gyp rebuild 2> builderror.log) || (exit 0)

посмотрите на этот файл для получения дополнительной информации о точной проблеме:

/usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/builderror.log