Я получаю следующую ошибку:
{ [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
Ничего не работает. Пожалуйста, предложите
Найти в модуле 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
У меня был этот вопрос сегодня (19 февраля 2016 года), и я решил его, установив последнюю версию Mongoose. Попробуйте поместить это в свой пакет. Json:
"mongoose": "~4.4"
Надеюсь, что это поможет. Решил это для меня!
Проблема заключается в том, что при установке 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
На этот раз вы увидите желтые линии вместо красных, но ошибка исчезнет.
Я решил эту проблему, установив версию mogoose 3.8.23
npm install [email protected]
Это сработало для меня. Поиск в рабочей области для текста:
"../build/Release/bson"
Вероятно, вы найдете его в модулях монго и монах.
Затем замените каждый:
bson = require('../build/Release/bson');
с:
bson = require('bson');
что все!
Попробуйте npm install [email protected]
, а также замените
bson = require('../build/Release/bson');
до
bson = require('../browser_build/bson');
в node_modules/bson/ext/index.js
Это сработало для меня:
Перейти к файлу (в вашем проекте):
node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
и измените:
bson = require('../build/Release/bson');
в
bson = require('bson');
node_modules
в систему контроля node_modules
?
Установите последнюю версию 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 окончательно решают проблему.
При создании установки для 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.
Спасибо:), надеюсь, что это кому-то поможет.
Отмеченный ответ полностью неверен. Все, что происходит, это скрыть оператор журнала консоли и не делает ничего общего с фактической проблемой. Вы также можете закрыть глаза, и он достигнет того же результата.
Проблема вызвана 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
самостоятельно и проверить версии.
Запустите эту команду, чтобы удалить mongoose npm uninstall --save mongoose
- после этого переустановите ее, но на этот раз npm
автоматически установит последнюю версию mongoose run npm install --save mongoose
. Это сработало для меня.
Развертывание Keystone JS CMS У меня была такая же ошибка, и я думаю, что наиболее элегантным решением является следующее:
Установить npm-check-updates
:
root@keystonejs:~# npm install -g npm-check-updates
В каталоге вашего каталога ключевых слов, где размещен package.json
, проверьте зависимости:
debian@keystonejs:~/myproject/manalcjim$ npm-check-updates -u
Затем обновите все пакеты:
debian@keystonejs:~/myproject/manalcjim$ npm install
И, наконец, если вы выбрали jade
для шаблонов, возможно, вам понадобится явно установить модуль jade
:
debian@keystonejs:~/myproject/manalcjim$ npm install jade --save
Когда я получал такие ошибки, я обновлялся с node v0.10 до node v4.x.x. Мне нужно было установить более новую версию gcc (я думаю, что у меня был gcc v4.4.x или что-то в этом роде). Я обновился до gcc 4.7.2, и после этого все сработало.
В моем случае биты, которые поставляются с 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...
(или изменить код для молчания в проблеме)У меня также была проблема с bson.
пробует новую версию мангуста
npm install [email protected]
решил проблему.
Массимо.
Единственное, что помогает мне в Windows 7 (x64): https://stackoverflow.com/questions/29238424/error-in-npm-install-inspite-of-changing-the-file-bson
Переустановите node и python с версиями x32.
Я провел много времени с этой ошибкой (не удалось загрузить расширение С++ bson), и, наконец, когда я установил модуль node-gyp
(для сборки собственных аддонов) и даже установил Windows SDK с визуальной студией - nodejs не узнал собранный модуль bson.node как модуль. После переустановки проблема исчезла.
Опять же, что означает эта ошибка?
Собственно, это даже не ошибка. Вы все еще можете использовать мангуст. Но в этом случае вместо быстрой нативной реализации модуля bson вы получили js-реализацию, которая медленнее. Я видел много таких советов, как "edit path inside inside node_modules..." - что бесполезно, потому что оно не решает проблему, а просто отключает сообщения об ошибках.
Если вы используете 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-пути.
npm install --msvs_version=2012
К сожалению, все приведенные выше ответы только наполовину правы. Долгое время это выяснялось.
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
Это работает как магия!!
В нашем случае причина, по которой С++-версия 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 решила его.
Извините за повторное прочтение комментариев по этому вопросу, но я хотел опубликовать это для всех, кто попадает в это в будущем, поскольку этот поток был очень полезен при решении нашей проблемы.
У меня была такая же проблема после обновления версии ubuntu до 16.04. Я решил таким образом, надеюсь, что это поможет.
$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install
Я понимаю, что этот поток 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. Это устранило ошибку.
Я публикую это для полноты.
найти в модуле 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');
}
}
Попробуйте выполнить npm install bson
и npm update
Сначала я просто нахожу в модуле npm mongodb файл index.js..node_modules\mongodb\ node_modules\bson\ext\index.js
и изменить путь к js-версии в блоке catch
bson = require ('../build/Release/bson'); для bson = require ('../browser_build/bson');
но потом я просто изменил его вот так, все подобное... ранее установил модуль...: bson = require ('bson');
На сегодняшний день (2017 год) у нас есть этот удивительный модуль npm: https://github.com/felixrieseberg/windows-build-tools который обычно решает множество проблем с созданием родных вещей для окон.
Попробуйте устранить проблему:
Remove node_modules
npm install --global windows-build-tools
npm install
Я решил эту ошибку, выполнив это, и это отлично сработало для меня. Я создал приложение node, в котором есть папка node -android/node -modules.So здесь, в каталоге node -modules. У меня есть еще один каталог bson/ext/index.js, который открывает этот файл и вы можете найти внутри блока catch.
bson = require('../build/Release/bson');
измените приведенную выше строку на
bson = require('../browser_build/bson');
и ошибка исчезла, и приложение работает отлично, без каких-либо ошибок или предупреждений.
Лучшим решением для меня было обновление с node -mongodb 1.x до 2.x.
Вы не должны изменять файлы в папке с библиотекой 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
Итак, у меня такая же проблема, и это происходит, тогда указанный 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.
Буду рад, если мой пост поможет кому-то...
Я пробовал bson = require('../browser_build/bson');
, но закончил работу с другой ошибкой
Невозможно установить свойство "BSON_BINARY_SUBTYPE_DEFAULT" из undefined
Наконец, я исправил эту проблему просто npm update
, это исправит модуль bson в mongoose.
Первый экземпляр bson.js
код из browser_build folder
второй создать новый файл bson.js
и вставить код
третий сохраните новый файл рядом с index.js
.
Попробовал npm install mongoose --msvs_version = 2012, если у вас установлено несколько Visual, это сработало для меня
Я работаю с ОС 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
Я попробовал это в монго-синхронизации версии 4.1.2
но они внесли некоторые изменения и не работают с предлагаемыми здесь решениями.
решение, которое работало для меня
Путь node_modules/mongo-sync/node_modules/bson/ext/index.js
Старый код
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('../build/Release/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');
}
}
Изменить блок try (скопировать инициализацию bson из блока catch)
bson = require('../lib/bson/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('../lib/bson/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 = require('../../../browser_build/bson.js');
вместо
bson = require(../browser_build/bson.js');
так что посмотрите, правильный ли путь.