Mongoose: js-bson:无法加载c++ bson 扩展,使用纯JS 版本

创建于 2014-09-07  ·  115评论  ·  资料来源: Automattic/mongoose

我点击了Fork ,克隆了 repo 并将这个模块附加到我的项目中。 我收到这个错误

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 下的问题。

是的,我也注意到了这一点。 你的代码仍然可以工作,只是你的性能可能更差。 我会在下一个版本中修复这个问题。

好的

同样的问题

同样在这里。 将保持 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 中)后,我刚刚解决了它需要发布版本。 正如您在代码的这一部分中看到的:

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

我进入了 build 目录并使用以下命令简单地编译 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 。 你们都可以检查一下这是否有帮助?

在 OS X 10.9.5 上高于海平面 2.1.7

你可以尝试一个干净的 npm install - 杀死 node_modules 然后npm install吗? 这听起来确实像是在不重建 js-bson 的情况下更改节点版本的问题。

+1

@brunobatista在您的 node_modules 上尝试rm -rf并进行干净的 npm 安装。

同样的问题:
节点版本:v0.10.35
npm 版本:2.1.18

同样的问题在这里:
操作系统:Arch Linux
节点版本:v0.10.35
npm 版本:2.1.18
猫鼬版本:3.8.21

试过 'rm -rf node_modules; npm 缓存清理; npm install' 没有运气。
还尝试了 Mongoose 3.8.15 版,结果相同。

同样的问题出现在 Ubuntu 14.04 上。 我的步骤:
1) 将 npm 从 1.3 更新到 2.1.18
2) npm 缓存清理
3) rm -rf node_modules
4) npm 我
有用!

但我在 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
猫鼬版本: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

任何解决方法或计划修复它?

我什么都没找到:(
我尝试重新安装我的软件包...
用 node-gyp 重建 bson
清理 npm 缓存和 ....
什么都没发生。
我还是收到了这条消息

我将我的猫鼬包更新到 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.
#
##############################################################

固定的!
我使用最新的稳定版猫鼬 (3.8.23)
问题已解决:)

“修复”这通常是不可能的,因为此错误消息可能意味着众多事情之一。 这可能意味着您没有安装正确版本的 python 或正确的 C++ 编译器(因为 node-gyp),这可能意味着您从 npm 安装 mongoose 等时切换了 node 版本。

你赢了!

请原谅,是我的错。

构建错误日志:
吉普错误! 配置错误
吉普错误! 堆栈错误:Python 可执行文件“python”是 v3.4.2,gyp 不支持。
吉普错误! 堆栈 您可以通过 --python 开关指向 Python >= v2.5.0 & < 3.0.0。
吉普错误! 堆栈在 failPythonVersion (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:108:14)
吉普错误! 堆栈在 /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:97:9
吉普错误! 堆栈在 ChildProcess.exithandler (child_process.js:735:7)
吉普错误! ChildProcess.emit 处的堆栈(events.js:110:17)
吉普错误! 堆栈在可能关闭(child_process.js:1008:16)
吉普错误! 堆栈在 Socket。(child_process.js:1176:11)
吉普错误! Socket.emit 上的堆栈 (events.js:107:17)
吉普错误! 堆栈在 Pipe.close (net.js:476:12)
吉普错误! 系统 Linux 3.14.27-1-lts
吉普错误! 命令“节点”“/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js”“重建”
吉普错误! cwd /home/node/sites/hellooo/src/node_modules/mongoose/node_modules/mongodb/node_modules/bson
吉普错误! 节点 -v v0.12.0
吉普错误! 节点-gyp -v v1.0.2
吉普错误! 不好

就我而言,解决方案是:

npm 配置集 python python2.7

重新安装猫鼬并工作。

我没有注意'npm install'输出中的这一行:

[email protected] 安装/home/node/sites/hellooo/src/node_modules/mongoose/node_modules/mongodb/node_modules/bson
(node-gyp 重建 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 重建 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 重建 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() 需要回调函数但得到一个 [object Undefined]
在路线。(c:\Raj\project\meandemo\node_modules\express\lib\route
r\route.js:170:15)
在 Array.forEach(本机)
在 Route.(anonymous function) as get
在 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

我也收到了这个警告,但它对我有用。

我在节点 0.12.x 上使用 fedora 20 并收到此警告。 继续使用它安全吗?
我对节点 0.10.x 没有问题

这似乎是一个弃用警告,但不确定后果。 正如我之前所说,它对我来说效果很好。

@rajnav错误看起来像它在 Express 中。 bson not found 错误是一个警告,它无法找到本地编译的 bson 二进制文件,不应该导致崩溃。

此外,我还看到了 customFds 选项弃用警告。 应该还可以。 我会更多地调查那是从哪里来的。

builderror.log 文件提供了答案。
我已经通过 npm install 传递了--python=python2.7标志,就像它要求的那样,并且没有更多错误。 它适用于 Windows 64 位和 ubuntu 安装。

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

聚苯乙烯
在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

为我工作!

所以python是使用mongoose的必要条件??? 文档上不清楚,所以我不允许在生产环境中安装它。 (除非记录在案...):(

Mongoose 只需要 Python,因为node-gyp(围绕 v8 构建系统的节点包装器)需要 python 。 Python 不是 mongoose 的运行时依赖项。 如果您需要 mongoose 需要 python 以构建 C++ bson 解析器的文档,请单击此处

然而,再一次,即使无法构建 bson 解析器,mongoose 也会按预期工作。 唯一需要 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 尝试首先下载预先构建的二进制文件,除非您选择退出。

至于业务影响,再一次,这是一个_警告_,而不是一个_错误_。

感谢您的澄清回答。 如果我不在 mongo-core 目录中安装 npm,那么 grunt 和 node 将不会启动,因此这个警告至少在我的场景中是一个阻碍,显然(向上滚动)在许多其他场景中。 我可以看到,从您的角度来看,这与您的项目无关,但它无法在 Linux、Mac 和 Windows 等系统上全新运行。

2015年4月17日上午15:33嗯瓦列schrieb卡尔波夫[email protected]

响,不是错误。

如果他们不开始,那么其他事情是错误的。 此消息是一个警告,不会阻止您启动 grunt 或 node。 你能告诉我原始 npm install 命令的其余输出吗(在你在 mongodb-core 中运行 npm install 之前)?

再说一次,如果你现在想摆脱这个警告,现在唯一的方法是设置node-gyp 的依赖项

感谢 vkarpov15 在这个线程中坚持下去。 我只想吐出我自己的 +1,所以你知道还有另一个有同样的问题。 话虽如此,我仍然可以运行我的应用程序,所以我将接受您的建议,这不是错误,而是警告。 所以,这里希望警告在未来的更新中得到解决,让您更加安心。 再次感谢。

仅供参考~这个警告是在我将节点从 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。 sry 缺乏经验。 您是说,“尝试清除您的 node_modules 并重新安装 rm -rf node_modules && npm install”。 我在窗户上。 我在哪里运行这些命令? 我尝试在我的项目文件夹中运行“rm -rf node_modules”,它告诉我“rm 不是......命令”。

只需在 Windows 资源管理器中删除 node_modules,同样的事情。 然后在您最初运行它的任何地方运行 npm install。

一般建议,如果您在 Windows 上进行节点开发,请使用 git bash + mingw

在 Windows 7 (x64) 上将节点更新为0.12.3版本后立即出现相同的错误。
我已经安装了: 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 :我为我找到了Win7 和 nodejs 0.12.3

对于 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 驱动程序版本。 2.0.33

希望能帮助到你。

有人可以确认 ChrisGciso 的解决方案是可行的吗? 我们现在正面临着与 Atlassian Bamboo 相同的问题。 任何想法如何修复 Bamboo?

这不是解决方案,只是一个黑客。 同样,您可以删除该文件中的控制台输出。

我正在努力理解如何回退到 JS Bson 以及它的性能不如 C++ 实现的警告,只是一个表面问题。

斯蒂芬·克里斯汀
Edelweißstr. 4
81541 慕尼黑

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

在 2015 年 6 月 9 日 17:38 +0200 上, [email protected]写道:

这不是解决方案,只是一个黑客。 同样,您可以删除该文件中的控制台输出。


直接回复本邮件或在 GitHub 上查看(https://github.com/Automattic/mongoose/issues/2285#issuecomment-110406406)。

@ChrisGciso这只是

@nottinhill不幸的是,我没有使用竹子的经验,所以我

事实上,我们希望在未来做的事情之一就是缩小编译后的 bson 解析器和 JavaScript bson 解析器之间的差距。 如果您想做出贡献,欢迎您访问 http://github.com/mongodb/js-bson :)

@vkarpov15如果“错误”消息没有简单的解决方案并且不会对性能造成任何实质性影响,则将它们

也许它应该被标记为“信息”而不是“错误”?

一个公平的观点。 有native_parser标志应该阻止 mongodb 寻找 js-bson 的编译版本。

我在 Fedora 22,节点 v0.12.4,今晚安装

npm 配置集 python python2.7
=> 解决了我的问题,谢谢

我在 Docker archlinux 容器中遇到了这个问题,我的解决方案是:

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

猫鼬 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和make,所以它可以将cpp编译成二进制文件。


弗雷德里科·苏萨
RioBus 联合创始人 - http://riob.us/ http://riob.us/
电话:(+55 21) 97285-8787
巴西里约热内卢

EM 17/06/2015,A(S)05:22,斯蒂芬Kristyn [email protected] escreveu:

关于 Bamboo 错误 - 我通过创建一个 npm 任务并像往常一样设置环境变量来解决这个问题,然后是以下参数:

安装节点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。 但不起作用:-(

您是否尝试过干净的重新安装? 另外,除非您关心 kerberos 身份验证,否则不要担心 libkrb,猫鼬没有它也能正常工作。

@TimePower您是否尝试过全局 node-

尝试使用与 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 和猫鼬 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 cache clean && npm install
在同样的错误后对我不起作用

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 install 失败。 你能告诉我更多关于这与 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 更新后,尝试在 node 中要求模块时发生错误。 我试图让它工作几个小时,但网上给出的建议似乎没有帮助,所以我再次降级并且从那以后就没有看过它。

我刚刚解决了那个。

当您通过 npm 安装 mongoose 模块时,它的文件夹中没有内置的 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

这是我在node v4上安装mongoose ( [email protected] ) 时的完整日志

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.14.1.04.0.0使用以下程序:

  1. nvm 安装 4.1.0
  2. rm -rf node_modules/
  3. 安装
  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],它不使用 BSON 的 C++ 扩展。 我确实在使用[email protected]遇到了这个错误,但那是因为

我在 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(XCode 安装的默认 Clang 编译器)有关。

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是对的,更新

@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、节点 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

这对我有用:

@nityanarayan44解决方案也对我

同样的问题,我的版本是node 2.15,平台Centos

没有像 2.15 这样的 Node 版本,所以我认为你的意思是 io.js。 和
io.js 上游很久不支持了,升级到 Node 4
或 6 尽快。

Michał Gołębiowski

@arefm Thx,它对我更新版本 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更新猫鼬解决了这个问题,但不知何故我的应用程序没有连接到数据库.....

在我们的例子中,没有找到 c++ 版本 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)

这表明代理可能是问题所在。

很抱歉再次唤醒对此的评论,但我想将其发布给将来遇到此问题的任何人,因为该线程对解决我们的问题非常有帮助。

@aventurella感谢您的修复,它奏效了! 不过让我觉得有点好笑。

我在 Windows 10 上有这个问题,也不能运行“基本”示例……应该是安装文件应该提供运行某些东西的所有东西,或者至少有这样做的说明……
这他妈的烦人!!!!! :@

@GST5555如果您想实时获得帮助,请随时加入我们以下任一社区:
Gitter.im
松弛

此页面是否有帮助?
0 / 5 - 0 等级