Невозможно найти код модуля '../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.