Невозможно найти код модуля '../build/Release/bson']: 'MODULE_NOT_FOUND'} js-bson: Не удалось загрузить расширение С++ bson, используя чистую версию JS

Я получаю следующую ошибку:

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' } 
  js-bson: Failed to load c++ bson extension, using pure JS version

Вот подробности моей версии:

ОС: Windows 7

MongoDB: 2.6.5

Node: 0.12.0

Я пробовал эти вещи, прежде чем я разместил эту проблему здесь.

  • Я перешел в папку \node -modules\mongoose\node -modules\mongodb\node -modules\bson и сделал следующее изменение в файле binding-gyp from 'include_dirs': ['

  • Запустить эту команду npm install -g node -gyp

  • Я обновил версию mongoose до версии 3.8.21 внутри package.json

Ничего не работает. Пожалуйста, предложите

Ответ 1

Найти в модуле npm mongodb:

..\node_modules\MongoDB\node_modules\BSON\вн\index.js

Изменить путь к js-версии в блоке catch:

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

To:

bson = require('../browser_build/bson');

Или скопируйте файл в:

..\node_modules\BSON\построить\Release\BSON

From:

..\node_modules\BSON\browser_build\BSON

Ответ 2

У меня был этот вопрос сегодня (19 февраля 2016 года), и я решил его, установив последнюю версию Mongoose. Попробуйте поместить это в свой пакет. Json:

"mongoose": "~4.4"

Надеюсь, что это поможет. Решил это для меня!

Ответ 3

Проблема заключается в том, что при установке mongoose через npm предполагается, что у вас установлен python на ваших окнах и пытается создать необходимые библиотеки. Поскольку у вас нет python, он пропускает фазу здания с предупреждением. Но когда вы запускаете приложение, требуемых модулей нет, поэтому вы получаете эту ошибку.

Чтобы сделать все правильно, сначала установите python (версия 2.7) на свой компьютер с помощью https://www.python.org/downloads/ или если у вас установлен chockolatey, просто введите choco install python2.

Затем убедитесь, что ваша переменная python установлена. Вы можете установить его в командной строке, например:

SET python=D:\Python27\python.exe

(Конечно, вы должны изменить путь в соответствии с вашим расположением python) Затем установите node -gyp:

npm install -g node-gyp

Теперь вы можете переустановить mongoose или любой другой модуль, вызывающий проблему:

npm install mongoose

На этот раз вы увидите желтые линии вместо красных, но ошибка исчезнет.

Ответ 4

Я решил эту проблему, установив версию mogoose 3.8.23

npm install [email protected]

Ответ 5

Это сработало для меня. Поиск в рабочей области для текста:

"../build/Release/bson"

Вероятно, вы найдете его в модулях монго и монах.

Затем замените каждый:

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

с:

bson = require('bson');

что все!

Ответ 6

Попробуйте npm install [email protected], а также замените bson = require('../build/Release/bson'); до

bson = require('../browser_build/bson'); в node_modules/bson/ext/index.js

Ответ 7

Это сработало для меня:

Перейти к файлу (в вашем проекте):

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

и измените:

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

в

bson = require('bson');

Ссылка: https://github.com/mongodb/js-bson/issues/118

Ответ 8

Короткий ответ

Установите последнюю версию mongodb.

Более длинный ответ

Убедитесь, что ваш package.json использует последнюю версию mongodb, затем удалите node_modules/mongodb и снова запустите npm. Если вы не использовали mongodb в качестве прямой зависимости, попробуйте найти, какой пакет использует mongdb. Я использовал:

find . -type f -name package.json | xargs grep mongodb
...
./sails-mongo/package.json:    "mongodb": "1.4.26",
...

Итак, я обновил. /sails -mongo/package.json, чтобы:

"mongodb": "2.1.7",

Затем удалите node_modules/mongodb и снова запустите npm. Кажется хорошо сейчас.

Более длинный ответ

Мне не нравится текущий предлагаемый способ использования

require('../browser_build/bson')

Поскольку мы смотрим на.. /browser _build/bson.js, файл строк 4k +, который также является "неместной" реализацией. Поэтому, хотя он не выплюнет никаких жалоб, он все еще "использует чистую версию JS", что означает более медленную производительность.

Глядя на https://github.com/mongodb/js-bson/issues/145 и https://github.com/mongodb/js-bson/issues/165, похоже, проблема была вызвана:

antoniofruci прокомментировал 15 сентября 2015 г.

Я только узнал, что код С++ был выведен 6 месяцев назад, и теперь это необязательная зависимость: bson-ext. Действительно, если вы устанавливаете последнюю версию, ошибка не возникает.

Итак, я попытался удалить весь node_modules и по-прежнему получил ту же ошибку. И глядя на package.json из node_modules/mongodb, его версия все еще 1.4.26, а не последняя версия 2.1.7.

По-видимому, мой монгодд приходит как зависимость другого пакета, который я установил: паруса-монго. Модификация package.json из sails-mongo и повторная установка npm окончательно решают проблему.

Ответ 9

Отмеченный ответ полностью неверен. Все, что происходит, это скрыть оператор журнала консоли и не делает ничего общего с фактической проблемой. Вы также можете закрыть глаза, и он достигнет того же результата.

Проблема вызвана node -gyp и только это. Его цель состоит в том, чтобы скомпилировать собственные расширения для определенных модулей, таких как bson.

Если это не удается сделать , то код будет отвисеть от версии JS и любезно рассказать об этом через информативное сообщение:

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

Я предполагаю, что вопрос заключается в том, как скомпилировать родное расширение С++, а просто не видеть сообщение, поэтому позвольте ему обратиться к этому.

Чтобы node -gyp работал, ваш node -gyp должен быть в курсе ваших компиляторов node и С++ (которые будут отличаться в зависимости от вашей ОС). Также важно, чтобы ваш модуль также обновлялся.

Сначала удалите и переустановите node -gyp

npm un node-gyp -g;npm i node-gyp -g

Теперь вам нужно будет полностью удалить и переустановить любой модуль node в вашем приложении (включая модули, установленные также требованиями), которые имеют bson. Это должно позаботиться об ошибке. Вы можете найти "Release/bson" и найти виновных.

find node_modules/ -type 'f' -exec grep -H 'Release/bson' {} \;

И затем удалите и переустановите эти модули.

Легче всего переделать всю папку node_modules:

 rm -rf node_modules
 npm cache clear
 npm i

Если вы все еще испытываете проблемы, то либо 1) ваш модуль устарел - проверьте отслеживание проблем в своем репо или 2) у вас есть потенциальный конфликт - иногда у нас может быть локальный node -gyp, например. Вы можете запустить node-gyp самостоятельно и проверить версии.

Ответ 10

При создании установки для www.spotdekho.com на новой машине windows10 мне не удалось выполнить команду "nodemon web.js" из-за той же ошибки

"Ошибка: не удается найти модуль '../build/Release/bson'"

Устанавливает его с помощью следующих шагов:

  • Создайте папку "Release" внутри "node_modules\bson\build \" location
  • Скопировать bson.js из "node_modules\bson\browser_build \"
  • Вставьте bson.js внутри папки node_modules\bson\build\Release.

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

PS: Я использую версию мангуста 4.8.8.

Спасибо:), надеюсь, что это кому-то поможет.

Ответ 11

В моем случае биты, которые поставляются с mongoose (npm install mongoose), имеют рабочую версию пакета mongodb в своей папке node_modules.

Следующие шаги помогли мне устранить проблему:

  • npm install mongoose
  • скопируйте node_modules\mongoose\node_modules\mongodb в мою корневую папку node_modules (перезапишите любую версию, которая появилась с npm install mongodb)
  • игнорировать ошибку Failed to load c++ bson extension... (или изменить код для молчания в проблеме)

Ответ 12

Когда я получал такие ошибки, я обновлялся с node v0.10 до node v4.x.x. Мне нужно было установить более новую версию gcc (я думаю, что у меня был gcc v4.4.x или что-то в этом роде). Я обновился до gcc 4.7.2, и после этого все сработало.

Ответ 13

Развертывание Keystone JS CMS У меня была такая же ошибка, и я думаю, что наиболее элегантным решением является следующее:

Установить npm-check-updates:

[email protected]:~# npm install -g npm-check-updates

В каталоге вашего каталога ключевых слов, где размещен package.json, проверьте зависимости:

[email protected]:~/myproject/manalcjim$ npm-check-updates -u

Затем обновите все пакеты:

[email protected]:~/myproject/manalcjim$ npm install

И, наконец, если вы выбрали jade для шаблонов, возможно, вам понадобится явно установить модуль jade:

[email protected]:~/myproject/manalcjim$ npm install jade --save

Ответ 14

Запустите эту команду, чтобы удалить mongoose npm uninstall --save mongoose - после этого переустановите ее, но на этот раз npm автоматически установит последнюю версию mongoose run npm install --save mongoose. Это сработало для меня.

Ответ 15

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

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

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

Ответ 16

Если вы используете Windows 8.1, вы можете захотеть убедиться, что вы устанавливаете свои модули npm с помощью правильного компилятора Visual Studio.

У меня установлена ​​Visual Studio 2012, эта команда работает для меня. (после удаления node_modules dir)

npm install --msvs_version = 2012

По какой-то причине node -gyp пытается использовать неверную версию компилятора Visual Studio. Я также заметил, что команда "npm install" выводила предупреждения о не зависимостях node -gyp при установке модулей mongodb и mongoose.

После использования правильной msvs_version предупреждения npm install ушли, а также предупреждение консоли при запуске моего приложения nodejs.

Вы также можете убедиться, что у вас установлена ​​правильная версия Python 2.7.X, а не Python 3.0.X.

Вам также необходимо убедиться, что python находится в вашем env-пути.

Ответ 17

Единственное, что помогает мне в Windows 7 (x64): fooobar.com/questions/35143/...

Переустановите node и python с версиями x32.
Я провел много времени с этой ошибкой (не удалось загрузить расширение С++ bson), и, наконец, когда я установил модуль node-gyp (для сборки собственных аддонов) и даже установил Windows SDK с визуальной студией - nodejs не узнал собранный модуль bson.node как модуль. После переустановки проблема исчезла.

Опять же, что означает эта ошибка?

Собственно, это даже не ошибка. Вы все еще можете использовать мангуст. Но в этом случае вместо быстрой нативной реализации модуля bson вы получили js-реализацию, которая медленнее. Я видел много таких советов, как "edit path inside inside node_modules..." - что бесполезно, потому что оно не решает проблему, а просто отключает сообщения об ошибках.

Ответ 18

У меня также была проблема с bson.

пробует новую версию мангуста

npm install [email protected]

решил проблему.

Массимо.

Ответ 19

Попробуйте выполнить npm install bson и npm update

Ответ 20

найти в модуле npm mongodb..node_modules\mongodb\ node_modules\bson\ext\index.js

и изменить путь к js-версии в блоке catch

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

to bson = require('../browser_build/bson');

try {
        // Load the precompiled win32 binary
        if(process.platform == "win32" && process.arch == "x64") {
          bson = require('./win32/x64/bson');  
        } else if(process.platform == "win32" && process.arch == "ia32") {
          bson = require('./win32/ia32/bson');  
        } else {
         bson = require('../browser_build/bson');  
        }   
    } catch(err) {
        // Attempt to load the release bson version
        try {
            bson = require('../browser_build/bson');
        } catch (err) {
            console.dir(err)
            console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
            bson = require('../lib/bson/bson');
        }
    }

Ответ 21

Я понимаю, что этот поток 1 год + старый, но он помог мне, хотя и с другим модулем.

Я установил mongoose-post-findv0.0.2, и эта проблема началась. Чтобы исправить это, я использовал предложения и перешел в \ node_modules\mongoose-post-find\node_modules\bson\ext и открыл файл index.js.

Файл начинается с блока try catch, пытающегося потребовать правильную версию bson

try {
    // Load the precompiled win32 binary
    if(process.platform == "win32" && process.arch == "x64") {
      bson = require('./win32/x64/bson');  
    } else if(process.platform == "win32" && process.arch == "ia32") {
      bson = require('./win32/ia32/bson');  
    } else {
      bson = require('../build/Release/bson');  
    }   
} catch(err) {
    // Attempt to load the release bson version
    try {
        bson = require('../browser_build/bson');
    } catch (err) {
        console.dir(err)
        console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
        bson = require('../lib/bson/bson');
    }
}

это скорректированная версия. Что происходит, он пытался загрузить bson из.. /build/Release/bson, не смог найти его и попал в улов. Пробуется снова загрузить bson из.. /build/Release/bson и, конечно, не удалось. Поэтому я изменяю путь в catch, чтобы посмотреть.. /browser _build/bson. Это устранило ошибку.

Я публикую это для полноты.

Ответ 22

У меня была такая же проблема после обновления версии ubuntu до 16.04. Я решил таким образом, надеюсь, что это поможет.

$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install

Ответ 23

В нашем случае причина, по которой С++-версия bson не была найдена, заключалась в том, что мы были за корпоративным прокси-сервером, и что-то в процессе сборки BSON должно было появиться для извлечения файлов. Когда мы посмотрели в node_modules/bson/builderror.log, мы увидели такую ​​ошибку:

gyp WARN install got an error, rolling back install gyp ERR! configure error gyp ERR! stack Error: connect ECONNREFUSED gyp ERR! stack at errnoException (net.js:904:11) gyp ERR! stack at Object.afterConnect [as oncomplete] (net.js:895:19)

Что подсказывает, что прокси-сервер может быть проблемой. Настройка переменных среды http_proxy и https_proxy решила его.

Извините за повторное прочтение комментариев по этому вопросу, но я хотел опубликовать это для всех, кто попадает в это в будущем, поскольку этот поток был очень полезен при решении нашей проблемы.

Ответ 24

Я работаю с ОС Windows 8.1, и у меня была такая же проблема. Источником проблемы была версия Python. Я обнаружил, что проблема происхождения просматривает файл... \ node_modules\mongodb\node_modules\mongodb-core\node_modules\kerberos\builderror.log.

Я установил правильную версию Python (2.7.9 для 64 бит) и решил мою проблему.

Примечание. Установленная версия python должна быть равна или больше 2.7.5 и меньше 3.0.0

Ответ 25

Попробовал npm install mongoose --msvs_version = 2012, если у вас установлено несколько Visual, это сработало для меня

Ответ 26

Первый экземпляр bson.js код из browser_build folder

второй создать новый файл bson.js и вставить код

третий сохраните новый файл рядом с index.js.

Ответ 27

Я пробовал bson = require('../browser_build/bson');, но закончил работу с другой ошибкой

Невозможно установить свойство "BSON_BINARY_SUBTYPE_DEFAULT" из undefined

Наконец, я исправил эту проблему просто npm update, это исправит модуль bson в mongoose.

Ответ 28

Итак, у меня такая же проблема, и это происходит, тогда указанный URL-адрес mongoDB не существует. Итак, чтобы исправить это, вам нужно перейти в папку "..\server\config\environment" и отредактировать в файле "development.js" ссылку на mongoDB.

Пример:

// Development specific configuration
// ==================================
module.exports = {
  // MongoDB connection options
  mongo: {
    uri: 'mongodb://localhost/test2-dev'
  },

  seedDB: true
};

Итак, измените этот "uri:" mongodb://localhost/test2-dev "на некоторый реальный путь к базе данных вашего mongoDB.

Буду рад, если мой пост поможет кому-то...

Ответ 29

Вы не должны изменять файлы в папке с библиотекой NODE_MODULES.

Эти файлы являются результатом команды npm install.

В основном, я думаю, для пользователей Windows - правильным способом является использование VM. Это то, что я делаю, когда работаю дома.

Все, что вам нужно:

for CentOS: yum install gcc gcc-c++ make openssl-devel

for Debian/Ubuntu: apt-get install build-essential

а затем npm install или, если вы уже это сделали - npm update

Ответ 30

Лучшим решением для меня было обновление с node -mongodb 1.x до 2.x.