无法加载c ++ bson扩展

总节点菜鸟在这里。我一直在尝试设置示例节点应用程序,但是每次我尝试运行时都会弹出以下错误:

节点应用

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

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: failed to connect to [#$%67890 :27017]
    at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:553:74)
    at EventEmitter.emit (events.js:106:17)
    at null.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15)
    at EventEmitter.emit (events.js:98:17)
    at Socket.<anonymous> (/home/thejazeto/code/nodejs/authen/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:512:10)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:830:16
    at process._tickCallback (node.js:415:13)
小胖2020/03/24 09:43:07

在Windows 7(x64)上唯一对我有帮助的东西:https : //stackoverflow.com/a/29714359/2670121

用x32版本重新安装node和python。
我花了很多时间解决这个错误:

无法加载c ++ bson扩展

最后,当我安装模块node-gyp(用于构建本机插件),甚至将Windows SDK与Visual Studio一起安装时,nodejs都无法将组装好的模块识别bson.node为模块。重新安装后,问题消失了。

同样,此错误是什么意思?

实际上,这甚至不是错误。您仍然可以使用猫鼬。但是在这种情况下,bson您得到的不是代替模块的快速本机实现,而是js-realization慢了。

I saw many tips like: "edit path deep inside node_modules..." - which is totally useless, because it does not solve the problem, but just turned off the error messages.

小宇宙2020/03/24 09:43:07
番长樱梅2020/03/24 09:43:07

我在使用centOS 7的Docker上工作,遇到了同样的问题。

环顾四周并进行几次尝试后,我通过安装mongodb和mongodb-server解决了此问题

yum install mongodb mongodb-server

我认为这不是生产最小容器的最佳方法。但我可以将范围限制在以下软件包中

==============================================================================================================
 Package                          Arch              Version                          Repository          Size

==============================================================================================================
Installing:
 mongodb                          x86_64            2.6.5-2.el7                      epel                57 M
 mongodb-server                   x86_64            2.6.5-2.el7                      epel               8.7 M
Installing for dependencies:
 boost-filesystem                 x86_64            1.53.0-18.el7                    base                66 k
 boost-program-options            x86_64            1.53.0-18.el7                    base               154 k
 boost-system                     x86_64            1.53.0-18.el7                    base                38 k
 boost-thread                     x86_64            1.53.0-18.el7                    base                56 k
 gperftools-libs                  x86_64            2.1-1.el7                        epel               267 k
 libpcap                          x86_64            14:1.5.3-3.el7_0.1               updates            137 k
 libunwind                        x86_64            1.1-3.el7                        epel                61 k
 snappy                           x86_64            1.1.0-3.el7                      base                40 k
飞云2020/03/24 09:43:07

我能够通过卸载和重新安装和尚软件包来解决。初始安装似乎具有损坏的mongodb / bson依赖关系。

小小十三2020/03/24 09:43:07

我只是遇到了同样的问题,对我来说几乎没有任何用处。显示的错误kerberos是导致问题的原因,并且它是mongoose依赖性之一。由于我使用的是Ubuntu,因此我认为在全局安装的软件包之间(在/usr/lib/node_modulesvia中sudo)和用户空间中的软件包之间可能存在权限问题

我在mongoose全球范围内进行安装- sudo当然,一切都按预期进行了。

PS该kerberos软件包现在也已全局安装在旁边mongoose,但是我不记得我是否有意这样做-在我试图解决问题时,还是从一开始就存在。

达蒙樱2020/03/24 09:43:07

我在EC2实例上遇到了同样的问题。我认为最初的原因是因为安装Mongo时运行了Node实例。我停止了Node服务,然后运行了

sudo npm update 

在我的节点项目的顶层文件夹中。这样就解决了问题,一切都变得很新

飞云2020/03/24 09:43:07

我试图在虚拟机(无用)共享文件夹上运行节点。那是个问题。我的主机是Windows,在Windows上安装了节点并像超级按钮一样工作。因此,如果您使用的是虚拟机,只需尝试在主机上运行节点服务器。

JinJin2020/03/24 09:43:07

我遇到了这个问题,因为我将Git存储库中包含了node_modules文件夹。当我在另一个系统上重建node_modules时,它起作用了。其中一个正在运行Linux,另一个在运行OSX。也许它们也具有不同的处理器体系结构。

Tom凯2020/03/24 09:43:07

这是我在Ubuntu上解决问题的方法:

  1. ln -s /usr/bin/nodejs /usr/bin/node
  2. npm install node-gyp
  3. cd node_modules/mongodb/node_modules/bson
  4. node-gyp rebuild

受@mbochynski答案启发,但我必须先创建一个符号链接,否则重建将失败。

西门2020/03/24 09:43:07

我遇到了同样的麻烦,尝试了很多选择,但最后一次npm intall在我的平均应用程序文件夹中起作用了。

卡卡西GO2020/03/24 09:43:06

我跑了:

sudo npm install bson

sudo npm update

一切都好。

梅十三2020/03/24 09:43:06

bson扩展消息只是一个警告,我一直在我的nodejs应用程序中得到它。

检查事项:

  • MongoDB实例:您是否正在运行MongoDB实例?
  • Config:您是否已将Mongoose正确配置为您的MongoDB实例?我怀疑您的配置错误,因为错误消息为您的mongodb服务器主机名吐出了一个非常奇怪的字符串。
番长猴子2020/03/24 09:43:06

对我来说,只需要在我的api目录中运行以下命令:

rm -rf node_modules
npm cache clean 
npm install
蛋蛋2020/03/24 09:43:06

我通过以下方式在CentOS上解决了此问题:

  • sudo yum groupinstall“开发工具”
  • 须藤npm install -g node-gyp
  • rm -r node_modules
  • npm缓存清理
  • npm安装
ProSam2020/03/24 09:43:06

我终于通过更新我的MongoDB的依赖版本纠正了这个错误〜2.0.36package.json

 "dependencies": {
    "consolidate": "~0.9.1",
    "express": "3.x",
    "mongodb": "~2.0.36",
    "mongoose": "^4.1.12"
  }
Mandy村村2020/03/24 09:43:06

sudo npm rebuild 是什么为我解决了。

西里神奇2020/03/24 09:43:06

不幸的是,以上所有答案仅是正确的一半。.花了很长时间才弄清楚这一点。

通过npm安装猫鼬bson会引发警告并导致错误...

npm install -g node-gyp

git clone https://github.com/mongodb/js-bson.git
cd js-bson
npm install
node-gyp rebuild

这就像魔术一样!!

TonyItachi2020/03/24 09:43:06

只是想说我也有错误

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

但是没有其他错误。我尝试了一切,发现在package.json文件中指定的mongodb驱动程序与我的MongoDB版本不兼容。我将其更改为最新版本(1.4.34),它可以正常工作!!!

番长神乐小小2020/03/24 09:43:06

因此,就我而言,我首先尝试在此目录/ node_modules / mongoose / node_modules /下进行检查,只是为了确认我具有bson模块。我发现我一开始没有它,然后我就跑步

npm安装bson 

接着

npm更新

所有的都经过排序,并在Ubuntu中进行了测试。

卡卡西Near2020/03/24 09:43:06

我正在运行Ubuntu 14.04,并且要为我修复它,我必须为节点创建一个符号链接,使其指向nodejs,如下所述:

Ubuntu 12.04上的nodejs vs节点

完成后,我重新运行以下命令:

rm -rf node_modules
npm cache clean
npm install
小卤蛋伽罗2020/03/24 09:43:06

一个常见的问题是node-gyp需要Python 2.x,并且如果系统python指向3.x,它将在bson没有警告的情况下无法编译您可以通过python在npm config中设置一个指向系统上的2.x可执行文件全局密钥来解决此问题例如,在Arch Linux上:

npm config -g set python "/usr/bin/python2"
阳光达蒙小卤蛋2020/03/24 09:43:06

我通过以下方式对在raspbian(用于raspberry的debian)上获取“无法加载c ++ bson扩展失败”的问题进行了排序:

npm install -g node-gyp

接着

npm update
卡卡西2020/03/24 09:43:06

我无法解决这个问题

到现在。首先,您必须拥有Pradeep Mahdevu提到的系统软件包。那些是:

xcode-select --install (on a mac) 

要么

sudo apt-get install gcc make build-essential (on ubuntu)

然后我安装了node-gyp

npm install -g node-gyp 

像datadracer所说的,但他建议的npm更新也有风险。它会更新所有模块,这可能很危险(有时版本之间的API会发生变化)。

我建议进入node_modules / mongodb / node_modules / bson目录,然后从那里使用

node-gyp rebuild

那为我解决了问题。

番长猴子2020/03/24 09:43:05

我猜您在安装mongodb库时没有make工具。我建议你做

xcode-select --install(在Mac上)或sudo apt-get install gcc make build-essential(在ubuntu上)

并运行

rm -rf node_modules
npm cache clean
npm install

或仅基于@tobias注释进行npm更新(安装build-essential后)

npm update
蛋蛋猿2020/03/24 09:43:05

在WIN 8.1上

看来我在package.json档案中使用了错误的猫鼬版本

"mongoose" : "^3.8.15"删除了该行package.json

CLI:

npm install mongoose --save

现在它说"mongoose": "^4.0.6"package.json,我的错误消失了。