Mongoose: js-bson: не удалось загрузить расширение c ++ bson с использованием чистой версии JS

Созданный на 7 сент. 2014  ·  115Комментарии  ·  Источник: Automattic/mongoose

Я нажал на Fork , клонировал репо и прикрепил этот модуль к своему проекту. Я получаю эту ошибку

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

nodejs v0.11.13 , последний osx . Похоже, проблема в модуле mongodb (работает с bson 0.2.15).

Самый полезный комментарий

При использовании с Keystone это помогло мне избавиться от этой ошибки:

добавить в мои package.json deps следующее:

"mongoose": "~4.4.16",
"mongodb": "~2.1.18",
"keystone": "^0.3.19",

тогда

npm install

наконец

rm -rf node_modules/keystone/node_modules/mongodb
rm -rf node_modules/keystone/node_modules/mongoose

Теперь я не получаю ошибку.

Все 115 Комментарий

Та же проблема

Та же проблема здесь; откат до 3.8.15 решает проблему в OSX под 0.11.13.

Да, я тоже это заметил. Ваш код по-прежнему будет работать, только у вас может быть хуже производительность. Я исправлю это в следующей версии.

Ok

Та же проблема

То же самое. Останется 3.8.15 до изменений.

Хорошо .... Та же проблема!

Есть новости по этому поводу?

У меня была такая же проблема (мангуст 3.8.19 и узел 0.10.33). Я только что решил это, заметив, что npm install (и npm update) компилирует отладочную версию bson, но index.js (в моем случае помещается в node_modules / mongoose / node_modules / mongodb / node_modules / bson / ext / index.js) требуется версия Release. Как вы можете видеть в этом разделе кода:

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.error("js-bson: Failed to load c++ bson extension, using pure JS version");
        bson = require('../lib/bson/bson');
    }
}

Я вошел в каталог сборки и просто скомпилировал bson с помощью следующей команды

make BUILDTYPE=Release all

Где-то в репозитории он был изменен с Release на Debug, но я не стал его искать.

@ Gas3 какую версию npm вы используете и на какой платформе вы это используете? Этого действительно не должно происходить в стабильном узле 0.10.x.

Кроме того, мне удалось воспроизвести это - выглядит как чистый npm install с npm 2.0.0 (версия, которая поставляется с узлом 0.11.14), а узел 0.11.14 отлично работает. То есть rm -rf node_modules && npm install . Можете ли вы проверить, помогает ли это?

над уровнем моря 2.1.7 на Os X 10.9.5

Можете ли вы попробовать чистую установку npm - убить node_modules, а затем npm install ? Это действительно похоже на проблему изменения версий узла без перестройки js-bson.

+1

@brunobatista попробуйте rm -rf на своих node_modules и выполните чистую установку npm.

Та же проблема:
версия узла: v0.10.35
версия npm: 2.1.18

Такая же проблема здесь:
ОС: Arch Linux
Версия узла: v0.10.35
версия npm: 2.1.18
Версия Mongoose: 3.8.21

Пробовал rm -rf node_modules; очистка кеша npm; npm install 'безуспешно.
Пробовал также с Mongoose версии 3.8.15 с теми же результатами.

Такая же проблема была в Ubuntu 14.04. Мои шаги:
1) Обновлен npm до 2.1.18 с 1.3
2) очистка кеша npm
3) rm -rf node_modules
4) нпм я
Оно работает!

Но я вижу ошибку в Windows 8.1. Это "требует" вызывает ошибку:

bson = require('./win32/ia32/bson'); 
The specified procedure could not be found.
C:\Users\d.kiriliuk\Projects\vozovoz\node_modules\mongoose\node_modules\mongodb\node_modules\bson\ext\win32\ia32\bson.node

Файл bson.node существует

Планируете это исправить?

Та же проблема

ОС: OSX 10.10.2
Версия узла: v0.10.36
версия npm: 2.3.0
Версия Mongoose: 3.8.22

Пробовал rm -rf node_modules; очистка кеша npm; npm install 'безуспешно.

Когда мне нужен мангуст, я получаю такой вывод:

[Error: Module did not self-register.]
js-bson: Failed to load c++ bson extension, using pure JS version

+1

Та же проблема!!

ОС: UBUNTU 14.04 (x64)
версия узла: 0.12.0
версия npm: 2.5.1
версия мангуста: 3.8.21

[Error: node_modules/mongoose/node_modules/mongodb/node_modules/bson/build/Release/bson.node: undefined symbol: node_module_register]

(err): js-bson: Failed to load c++ bson extension, using pure JS version

Есть ли обходной путь или планы по исправлению?

Ничего не нашел :(
Я пытаюсь переустановить свои пакеты ...
перестроить bson с помощью node-gyp
очистить кеш npm и ....
ничего не случилось.
все же я получил это сообщение

Я обновляю свой пакет mongoose до 3.9.7
проблема решена, но я получил это сообщение от мангуста:

##############################################################
#
#   !!! MONGOOSE WARNING !!!
#
#   This is an UNSTABLE release of Mongoose.
#   Unstable releases are available for preview/testing only.
#   DO NOT run this in production.
#
##############################################################

ФИКСИРОВАННЫЙ!
Я использую последнюю стабильную версию mongoose (3.8.23)
проблема исправлена ​​:)

«Исправить» это в общем случае невозможно, потому что это сообщение об ошибке может означать одно из многих. Это может означать, что у вас нет надлежащей версии python или подходящего компилятора C ++ (из-за node-gyp), это может означать, что вы переключили версии node с того момента, когда вы установили npm mongoose и т. Д.

Ты победил!

Пожалуйста, извините, это была моя вина.

builderror.log:
gyp ERR! ошибка настройки
gyp ERR! Ошибка стека: исполняемый файл Python "python" - v3.4.2, который не поддерживается gyp.
gyp ERR! stack. Вы можете передать переключатель --python, чтобы он указывал на Python> = v2.5.0 & <3.0.0.
gyp ERR! стек в failPythonVersion (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:108:14)
gyp ERR! стек в /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:97:9
gyp ERR! стек в ChildProcess.exithandler (child_process.js: 735: 7)
gyp ERR! стек в ChildProcess.emit (events.js: 110: 17)
gyp ERR! стек в mightClose (child_process.js: 1008: 16)
gyp ERR! стек в Socket.(child_process.js: 1176: 11)
gyp ERR! стек в Socket.emit (events.js: 107: 17)
gyp ERR! стек в Pipe.close (net.js: 476: 12)
gyp ERR! Система Linux 3.14.27-1-lts
gyp ERR! команда "узел" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "перестроить"
gyp ERR! cwd / home / node / sites / hellooo / src / node_modules / мангуст / node_modules / mongodb / node_modules / bson
gyp ERR! узел -v v0.12.0
gyp ERR! узел-gyp -v v1.0.2
gyp ERR! не хорошо

В моем случае решение было:

npm config set python python2.7

Переустановите мангуста и заработайте.

Я не обратил внимания на эти строки из вывода npm install:

[email protected] установить / home / node / sites / hellooo / src / node_modules / mongoose / node_modules / mongodb / node_modules / bson
(node-gyp rebuild 2> builderror.log) || (выход 0)

Это означает, что при сборке bson произошла ошибка, которую я не заметил.

Большое спасибо @ vkarpov15.

Да, я забыл сказать, что обновил конфигурацию npm python.

tnx @ vkarpov15

Привет,
Я выполнил команду "rm -rf node_modules && npm install" и вижу ниже.

/

[email protected] установить c: \ Raj \ project \ meandemo \ node_modules \ mongoose \ node_modu
lesmongodb \ node_modules \ kerberos
(node-gyp rebuild 2> builderror.log) || (выход 0)

c: \ Raj \ project \ meandemo \ node_modules \ mongoose \ node_modulesmongodb \ node_modules \
kerberos> node "c: \ Program Files \ nodejs \ node_modulesnpmbin \ node-gyp-bin .... \
node_modules \ node-gypbin \ node-gyp.js "перестроить

[email protected] установить c: \ Raj \ project \ meandemo \ node_modules \ mongoose \ node_modules
mongodb \ node_modulesbson
(node-gyp rebuild 2> builderror.log) || (выход 0)

Когда я запускаю свой сервер, я получаю ошибку ниже ..

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

js-bson: не удалось загрузить расширение c ++ bson с использованием чистой версии JS
c: \ Raj \ project \ meandemo \ node_modules \ express \ lib \ router \ route.js: 170
выбросить новую ошибку (сообщение);
^
Ошибка: Route.get () требует функций обратного вызова, но получил [объект не определен]
в Route.(c: \ Raj \ project \ meandemo \ node_modules \ express \ lib \ route
r \ route.js: 170: 15)
в Array.forEach (собственный)
в Route. (анонимная функция) как получить
в EventEmitter.app. (анонимная функция) (c: \ Raj \ project \ meandemo \ node_modul
es \ express \ lib \ application.js: 429: 19)
на объекте.(c: \ Raj \ project \ meandemo \ server.js: 23: 5)
в Module._compile (module.js: 460: 26)
в Object.Module._extensions..js (module.js: 478: 10)
в Module.load (module.js: 355: 32)
в Function.Module._load (module.js: 310: 12)
в Function.Module.runMain (module.js: 501: 10)

Вот подробности моей версии:
ОС: Windows 7
узел: 0.12.0
мангуст: 3.8.23
npm: 2.5.1

Пожалуйста, предложите

Привет @rajnav! Загляните в builderror.log, он может показать вам причину проблемы.

Та же проблема, но builerror.log содержит только одну строку:

child_process: customFds option is deprecated, use stdio instead.

в проекте / node_modules / mongoose / node_modules / mongodb / node_modules / bson

Я использую osx yosemite и узел 0.12.x

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

Я использую Fedora 20 с узлом 0.12.x и получил это предупреждение. Насколько безопасно продолжать с ним работать?
У меня не было проблем с узлом 0.10.x

Это кажется предупреждением об устаревании, но не уверен в последствиях. Как я уже сказал ранее, у меня все работает нормально.

@rajnav ошибка выглядит как в Express. Ошибка bson not found - это предупреждение о том, что не удалось найти собственный скомпилированный двоичный файл bson, и это не должно вызывать сбой.

Кроме того, я видел предупреждение об устаревании опции customFds. Должен по-прежнему работать. Я выясню, откуда это взялось.

Файл builderror.log дает ответ.
Я прошел флаг --python=python2.7 с установкой npm, как он и просил, и больше никаких ошибок. Он работал как с 64-битной Windows, так и с Ubuntu.

npm install --python=[path to python] mongoose

PS
На машине с Windows у меня все еще есть
child_process: customFds option is deprecated, use stdio instead.
в файле builderror.log, но это не приводит к появлению ошибок в консоли узла при запуске приложения.

мангуст: 3.8.24
npm: 2.7.9
ОС: Arch Linux

делает
rm -rm node_modules/
npm cache clean
npm config set python python2.7
npm install
работал у меня.

сделать чистую npm install
со мной случилось после обновления узла.

Мангуст 3.8.21
Ubuntu 14.04.2

С использованием

npm config set python python2.7
cd node_modules/mongoose/node_modules/mongodb/node_modules/bson
npm install

у меня сработало!

Итак, питон - это требование использовать мангуста ??? Это неясно в документации, поэтому мне не разрешено устанавливать его в производственной среде. (Если не задокументировано ...) :(

Mongoose требует Python только постольку, поскольку node-gyp (оболочка узла вокруг системы сборки v8) требует python . Python не является зависимостью времени выполнения для мангуста. Если вам нужна документация о том, что мангусту нужен Python для создания синтаксического анализатора C ++ bson, щелкните здесь .

Однако, опять же, mongoose будет работать должным образом, даже если он не сможет построить парсер bson. Единственная функция, которая требует для работы node-gyp, - это механизм аутентификации Kerberos.

Большое тебе спасибо,

@jayflo, это тоже беспокоит меня, теперь я больше не хочу, чтобы из-за этого проблемы !!

+1 Вот mongodb / js-bson / issues / 118

Это решит ваши проблемы:

$ cd node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/
$ npm install

Так что для меня было довольно очевидно, что виноват тот, кто интегрировал mongodb-core в mongodb в mongoose. Кто-то пропустил там установку npm. Есть ли способ усугубить ситуацию, поскольку очевидно , что затронуты тысячи пользователей, и влияние (бизнеса) можно смело считать очень высоким, по крайней мере, на мой взгляд, но раньше я ошибался.

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

Что касается влияния на бизнес, еще раз, это _ предупреждение_, а не _ ошибка.

Спасибо за разъясняющий ответ. grunt и node не запустятся, если я не установлю npm в каталоге mongo-core, поэтому это предупреждение является препятствием для показа, по крайней мере, в моем сценарии и, очевидно, (прокрутите вверх) во многих других. Я вижу, что, с вашей точки зрения, это не касается ваших проектов, но он не может запускаться «из коробки» как на Linux, так и на Mac и Windows.

Am 17.04.2015 um 15:33 schrieb Валерий Карпов [email protected] :

рнинг, а не ошибка.

если они не запускаются, значит, что-то еще не так. Это сообщение является предупреждением и не помешает вам запустить grunt или node. Можете ли вы показать мне остальную часть вывода вашей исходной команды установки npm (перед запуском npm install в mongodb-core)?

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

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

fyi ~ это предупреждение появилось после того, как я обновил узел с 10 до 12 ...

@camachowebworld попробуйте очистить ваши node_modules и переустановить rm -rf node_modules && npm install . Обычно при обновлении основной версии узла вам необходимо пересобрать все собственные расширения, включая bson. Переустановка должна помочь.

Ubuntu 14.04.1 LTS (AWS EC2)
Пришлось запустить "sudo apt-get install build-essential"

Может, может кому-нибудь помочь.

vkarpov15 спасибо за ответ на msg. сожалею об отсутствии опыта. вы говорите: «попробуйте очистить свои node_modules и переустановить rm -rf node_modules && npm install». я на окнах. где мне запустить эти команды? Я пытаюсь запустить "rm -rf node_modules" в папке моего проекта, он говорит мне, что "rm не .... команда".

Просто удалите node_modules в проводнике Windows, то же самое. Затем запустите npm install, где бы вы ни запустили его изначально.

Общее предложение: используйте git bash + mingw, если вы делаете node dev в Windows.

Та же ошибка возникла сразу после обновления узла до версии 0.12.3 в Windows 7 (x64).
Я уже установил: node-gyp, node-pre-gyp, python, .NET SDK -> после этого я больше не получаю сообщения об ошибках при сборке. А для мангуста 3.8.28 папка mongoose\node_modules\mongodb\node_modules\bson\build\Release
содержит эти файлы:

/obj
/bson.exp
/bson.lib
/bson.node
/bson.pdb

Но сообщение

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

все еще появляется

UPD : Я нашел для себя решение.

Для пользователей iojs:

Последние версии плохо поддерживают мангуста. Понизьте до последней стабильной версии v2.0.0 (ради бога используйте nvm). И это будет работать как шарм!

Добавляю эту информацию на всякий случай, здесь, в нашей компании, недавно возникла такая проблема.

В Windows я решил эту проблему, изменив одну строку в:

node_modulesmongodb \ node_modulesmongodb-core \ node_modulesbson \ node_modulesbons-ext \ ext \ index.js

строка после:

// Попытка загрузить релизную версию bson
пытаться {

от: bson = require ('../ build / Release / bson');
кому: bson = require ('../../../ lib / bson / bson');

Сообщение об ошибке:
{[Ошибка: не удается найти модуль '../build/Release/bson'] код: 'MODULE_NOT_FOUND'}
js-bson: не удалось загрузить расширение c ++ bson с использованием чистой версии JS

теперь ушел, и mongo, похоже, работает нормально. Используя драйвер mongodb ver. 2.0.33

Надеюсь, это поможет.

Может ли кто-нибудь подтвердить, что решение ChrisGciso жизнеспособно? Теперь мы сталкиваемся с той же проблемой, что и год назад, с Atlassian Bamboo. Есть идеи, как исправить с помощью Bamboo?

Это не решение, просто взлом. Таким же образом вы можете просто удалить консольные выходы в этом файле.

Я изо всех сил пытаюсь понять, как отказ от JS Bson и предупреждение о том, что он не так эффективен, как реализация C ++, - это просто косметическая проблема.

Стефан Кристин
Edelweißstr. 4
81541 München

+49 151 5461 8086
с. [email protected]
http://meshfields.de

9 июня 2015 г., 17:38 +0200, [email protected] , написал:

Это не решение, просто взлом. Таким же образом вы можете просто удалить консольные выходы в этом файле.

-
Ответьте на это письмо напрямую или просмотрите его на GitHub (https://github.com/Automattic/mongoose/issues/2285#issuecomment-110406406).

@ChrisGciso , это просто

@nottinhill У меня, к сожалению, нет опыта работы с бамбуком, поэтому я ничем не могу помочь. Независимо от того, является ли это «косметической проблемой», зависит от вашего варианта использования - например, в среде CI, такой как бамбук, вы обычно слишком беспокоитесь о том, чтобы сэкономить здесь микросекунду и сэкономить там пару байтов памяти. В вашей среде prod это потенциально имеет значение, и если вам действительно нужна дополнительная производительность, вам необходимо настроить зависимости node-gyp и переустановить.

Как бы то ни было, в будущем мы надеемся сократить разрыв между скомпилированным парсером bson и парсером bson JavaScript. Если вы хотите внести свой вклад, добро пожаловать на http://github.com/mongodb/js-bson :)

@ vkarpov15 Скрыть сообщения об ошибках, если они не имеют простого разрешения и не оказывают существенного влияния на производительность, может быть лучше, чем смешивать их с реальными ошибками, отражающими реальные проблемы. Наблюдать эту ошибку снова и снова в течение нескольких месяцев - это плохо, если с ней нельзя справиться, особенно для новых людей, которые хотят использовать драйвер. Есть ли лучшее решение, которое не включает в себя сложную серию шагов, чтобы просто избавиться от сообщения об ошибке?

Может, стоит пометить "Информация" вместо "Ошибка"?

Справедливый вопрос. Есть флаг native_parser который должен помешать mongodb искать скомпилированную версию js-bson.

Я на Fedora 22, узел v0.12.4, установлен сегодня вечером

npm config set python python2.7
=> решил свои проблемы, спасибо

У меня была эта проблема здесь, в контейнере Docker archlinux, и мое решение было:

$ pacman -S gcc make nodejs npm python2
$ npm config set python python2.7
$ npm install -g node-gyp

Mongoose версии 4.0.5

Что касается ошибки Bamboo - я _ решил_ проблему, создав задачу npm и установив обычную переменную среды, а затем следующие параметры:

install node-gyp

Вы увидите жалобы на отсутствие глобального флага, но в Bamboo мы, по крайней мере, не предпочитаем глобальные установки из-за гибкости миграции.

Ошибка редактирования вернулась:

build   17-Jun-2015 10:30:53    Running "mochaTest:src" (mochaTest) task
build   17-Jun-2015 10:30:53    { [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' }
error   17-Jun-2015 10:30:53    js-bson: Failed to load c++ bson extension, using pure JS version

Да, у меня это сработало, спасибо.

На самом деле, мне пришлось также установить gcc и сделать так, чтобы он мог скомпилировать cpp в двоичный файл.

-
Фредерико Соуза
Соучредитель RioBus - http://riob.us/ http://riob.us/
Телефон: (+55 21) 97285-8787
Рио-де-Жанейро, Бразилия

Em 17.06.2015, à (s) 05:22, Стефан Кристин [email protected] escreveu:

Что касается ошибки Bamboo - я решил проблему, создав задачу npm и установив обычную переменную среды, а затем следующие параметры:

установить node-gyp
Вы увидите жалобы на отсутствие глобального флага, но в Bamboo мы, по крайней мере, не предпочитаем глобальные установки из-за гибкости миграции.

-
Ответьте на это письмо напрямую или просмотрите его на GitHub https://github.com/Automattic/mongoose/issues/2285#issuecomment -112714644.

У меня была такая проблема. Обновлен connect-mongo до 0.8.2 и mongoose до версии 4.0.7, и все работает нормально.

Узел v0.12.2, NPM 2.13.0, OSX 10.10.4

Та же проблема с использованием sailsjs

Выполните обновление до mongoose> = 4.0.6, чтобы bson больше не использовал расширения C ++. В любом случае, это сообщение - просто предупреждение.

Обновление до 4.0.6 у меня сработало, спасибо vkarpov15.

Та же проблема. используйте xUbuntu 15.04.
Я пробовал установить пакет libkrb5-dev, nodejs-legacy. и обновите Node.js v4.1.0, npm 2.14.3, mongoose 4.1.7. но не работает :-(

Вы пробовали чистую переустановку? Кроме того, не беспокойтесь о libkrb, если вы не заботитесь о Kerberos auth, mongoose будет нормально работать и без него.

@TimePower Вы пробовали глобальную установку node-gyp?

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

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

Узел 4.1.0 и Mongoose 4.1.10.

rm -rf node_modules && npm cache clean && npm install @jackdbernier

Также это предупреждение, а не ошибка.

Выполните обновление до mongoose> = 4.0.6, чтобы bson больше не использовал расширения C ++.

Я использую Mongoose 4.1.10, но по-прежнему получаю сообщение об ошибке.

я решил понизить mongodb до 2.6

rm -rf node_modules && npm cache clean && npm install
у меня не работает, после той же ошибки

Такая же проблема здесь:

rm -rf node_modules && очистка кэша npm && установка npm
у меня не работает, после той же ошибки

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

Моя установка:

  • Машина AWS Ubuntu: Ubuntu 14.04.1 LTS
  • node.js v0.12.7
  • Мангуст 4.1.12
  • MongoDB 2.6.5

Все началось, когда я обновил nodejs, обновление до Mongoose 4.1.12 тоже не помогло.

Как это все еще проблема ??? Стоит ли мне вообще оставлять здесь дополнительную информацию ... все остальные сделали это за меня .... Кто-нибудь собирается стабилизировать это или что ???

Не ошибка, а предупреждение. Также в этом потоке достаточно информации о том, как правильно настроить node-gyp.

@ vkarpov15 Спасибо за ответ. Это ошибка, а не предупреждение: после этого сообщения установка npm завершается ошибкой. Не могли бы вы рассказать мне больше о том, как это связано с node-gyp.

npm install не выводит это сообщение, поэтому я очень в этом сомневаюсь.

Я сомневаюсь, что это как-то связано с node-gyp. Я использую OS X 10.11, я использовал _lots_ собственных зависимостей, таких как node-sass, даже до того, как они выпустили двоичные файлы для новых версий Node.js, и они скомпилировались правильно. Итак, моя установка в порядке. И все еще:

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

Я установил все зависимости прямо из Node.js 4.

@ vkarpov15 ты прав, моя ошибка. Ошибка произошла при попытке потребовать модуль в узле после обновления с помощью npm. Я пытался заставить его работать в течение нескольких часов, но ни один из советов, данных в Интернете, не помог, поэтому я снова понизил версию и с тех пор не смотрел на нее.

Я только что решил это.

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

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

bson = require ('bson');

Та же проблема во FreeBSD.

Как получить расширение C ++ BSON для сборки?


Вот что сказал npm install :

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

gmake: Entering directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/kerberos/build'
  SOLINK_MODULE(target) Release/obj.target/kerberos.node
  COPY Release/kerberos.node
gmake: Leaving directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/kerberos/build'

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

gmake: Entering directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/bson/build'
  CXX(target) Release/obj.target/bson/ext/bson.o
bson.target.mk:88: recipe for target 'Release/obj.target/bson/ext/bson.o' failed
gmake: Leaving directory '/usr/local/herbert/node_modules/ac-node/node_modules/mongodb/node_modules/bson/build'
[email protected] node_modules/crypto

[email protected] node_modules/bson

такая же проблема здесь

@ vkarpov15 Я подтверждаю, что говорит @mgol . Есть еще одна проблема, чем неправильная конфигурация node-gyp . У меня также есть много других встроенных модулей, которые правильно собирают. При установке ошибок не возникает.

Возникла проблема с node v4 которая не позволяет получить c++ bson extension , в результате чего появляется предупреждение js-bson: Failed to load c++ bson extension, using pure JS version .

Вот полный журнал, когда я устанавливаю mongoose ( [email protected] ) на node v4

apairet$ rm -rf node_modules/mongoose
apairet$ npm install
-
> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bson/ext/bson.o

> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o

[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected])

Для полноты картины я установил последнюю версию mongoose ( [email protected] ), но ошибка осталась прежней:

apairet$ npm install mongoose<strong i="22">@latest</strong>
npm WARN peerDependencies The peer dependency kerberos@~0.0 included from mongodb-core will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
-
> [email protected] install /sources/project/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
../lib/kerberosgss.c:509:13: warning: implicit declaration of function 'gss_acquire_cred_impersonate_name' is invalid in C99 [-Wimplicit-function-declaration]
        maj_stat = gss_acquire_cred_impersonate_name(&min_stat,
                   ^
1 warning generated.
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])

Дайте мне знать, могу ли я предоставить дополнительную информацию.
rgds

@antoinepairet какая именно версия узла? Выпущено много релизов v4.

Спасибо за быстрый ответ @ vkarpov15. Я действительно ценю это :-).
Извините, что не упомянул версию узла в моем предыдущем посте. Я тестировал 3 версии узла:
4.2.1 , 4.1.0 и 4.0.0 со следующей процедурой:

  1. nvm установить 4.1.0
  2. rm -rf node_modules /
  3. npm install
  4. протестируйте приложение и посмотрите, появляется ли предупреждение

Каждый раз имея js-bson: Failed to load c++ bson extension, using pure JS version

Я выполнил расширенные тесты на OSX. В Linux я тестировал только 4.2.1 .

Дайте мне знать, если я могу предоставить дополнительную информацию / тестирование.
Спасибо еще раз

PS: @AsyaHristeva Дело не в C++ IDE. другие собственные модули собираются просто отлично :-)

Хм на 4.1.1 [email protected] отлично работает на моем Mac, и в любом случае этой ошибки не должно быть, потому что [email protected] использует [email protected], который не использует расширение C ++ для BSON. Я получаю эту ошибку с [email protected], но это потому, что устаревшие версии драйвера mongodb, [email protected], на самом деле не поддерживают node> = 4 .

Я получаю ту же ошибку с Node v4.2.4, Mongo v2.6.11, OSX 10.11.2

npm install [email protected]
npm WARN peerDependencies The peer dependency kerberos@~0.0 included from mongodb-core will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency 
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.

> [email protected] install /Users/jw/Work/sp_app/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
../lib/kerberosgss.c:509:13: warning: implicit declaration of function 'gss_acquire_cred_impersonate_name' is invalid in C99 [-Wimplicit-function-declaration]
        maj_stat = gss_acquire_cred_impersonate_name(&min_stat,
                   ^
1 warning generated.
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
npm WARN unmet dependency /Users/jw/Work/sp_app/node_modules/latest/node_modules/npm requires request@'~2.67.0' but will load
npm WARN unmet dependency /Users/jw/Work/sp_app/node_modules/request,
npm WARN unmet dependency which is version 2.27.0
[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])

Когда я запускаю свое приложение, я получаю:

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

Интересно, проблема ли это OSX, потому что у меня нет проблем с Linux. Может ли это иметь какое-то отношение к gcc, компилятору Clang по умолчанию, установленному XCode.

gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.2.0
Thread model: posix

@ vkarpov15 прав, обновите mongoose до 4.4.5, исправьте эту проблему

@ vkarpov15 , правильно ли я предполагаю, что эта проблема вызвана запуском более новой версии Mongoose со старыми версиями MongoDB - например, версии 2.X?

Нет, версия mongodb тут ни при чем.

[ФИКСИРОВАННЫЙ]

У меня тоже была эта проблема


ОС: Windows 10
узел: v4.2.3
npm: 2,14,7


я просто устанавливаю путь Python

npm config set python python2.7

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

npm install mongoose


и это сработало.

@ nityanarayan44 У меня сработало

@mgol
Я использую OSX 10.10.5, node 4.4.2, npm 2.15.0, keystone 0.3.17

Я перешел к node_modules/keystone/package.json и удалил mongoose из зависимостей, затем

npm config set python python2.7
npm install mongoose

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

Также у меня сработало решение

Та же проблема. Моя версия - узел 2.15, платформа Centos.

Нет такой версии Node, как 2.15, поэтому я думаю, вы имеете в виду io.js. А также
io.js долгое время не поддерживался апстримом, обновитесь до Node 4
или 6 как можно скорее.

Михал Голембовски

@arefm Спасибо , у меня сработало обновление версии 3.8.23. Более того, решение другой проблемы: длина не определена и так далее.

@mgol Он говорил о npm . Последняя версия npm2 - 2.15.4.

@mnpenner Я считаю, что это 3.8.8

@jwerre Я сказал npm2. Некоторые из нас застряли на npm 2, потому что у 3 есть целый ряд различных проблем.

@mgol К сожалению, версия npm - 2.15, а не узел.

@mnpenner Да ты умный человек!

При использовании с Keystone это помогло мне избавиться от этой ошибки:

добавить в мои package.json deps следующее:

"mongoose": "~4.4.16",
"mongodb": "~2.1.18",
"keystone": "^0.3.19",

тогда

npm install

наконец

rm -rf node_modules/keystone/node_modules/mongodb
rm -rf node_modules/keystone/node_modules/mongoose

Теперь я не получаю ошибку.

@aventurella Сегодня я попал в ту же скалу, когда пробую краеугольный камень, спасибо за ваше решение.

но теперь мы получаем некоторые посторонние ошибки и некоторые недостающие ошибки, это нормально?

@ tomwang1013 обновление mongoose решило проблему, но почему-то мое приложение не подключается к БД .....

В нашем случае причина того, что версия bson для c ++ не была найдена, заключалась в том, что мы находились за корпоративным прокси-сервером, и что-то в процессе сборки 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)

Это предполагает, что проблема может быть в прокси.

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

@aventurella спасибо за исправление, это сработало! Хотя это заставляет меня чувствовать себя немного смешно.

У меня эта проблема в Windows 10, я тоже не могу запустить "базовый" пример ... предполагается, что установочные файлы должны содержать все необходимое для запуска чего-либо или, по крайней мере, иметь инструкции для этого ...
Это чертовски раздражает !!!!! : @

@ GST5555, если вы хотите получить помощь в режиме реального времени, присоединяйтесь к нам в любом из этих сообществ:
Gitter.im
Слабина

Была ли эта страница полезной?
0 / 5 - 0 рейтинги