首页 文章

无法加载c bson扩展名

提问于
浏览
184

这里有一个总节点noob . 我一直在尝试设置一个示例节点应用程序但每次尝试运行时都会弹出以下错误:

节点应用

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)

30 回答

  • 1

    如果bson扩展名不是't the reason, I guessed the other reason for 2504207 would be the user id' s . 所以我创建了一个新数据库,并为数据库添加了一个用户,并为该用户提供了密码( note :不是mongolab帐户密码) . 我更新了我的代码和瞧!有效 . 对吧? :d

  • 1

    我已经通过以下方式对raspbian(debian for raspberry)获取“无法加载c bson扩展”的问题进行了排序:

    npm install -g node-gyp
    

    然后

    npm update
    
  • 17

    以下是我在Ubuntu上修复问题的方法:

    • ln -s /usr/bin/nodejs /usr/bin/node

    • npm install node-gyp

    • cd node_modules/mongodb/node_modules/bson

    • node-gyp rebuild

    灵感来自@mbochynski的答案,但我必须首先创建一个符号链接,否则重建失败 .

  • 1

    我修改了/更改/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js的第10行:

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

    至:

    bson = require('bson');
    
  • 3

    我遇到了同样的麻烦尝试了这么多选项,但在最后 npm intall 在我的意思是app文件夹工作 .

  • 10

    我猜你在安装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
    
  • 0

    我刚解决了这个问题 .

    当您通过npm安装mongoose模块时,它的文件夹中没有内置的bson模块 . 在文件 node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js 中,更改行

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

    bson = require('bson');
    

    然后使用npm安装bson模块 .

  • 1

    我无法解决这个问题

    到现在 . 首先,您必须拥有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
    

    这解决了我的问题 .

  • 0

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

    npm config -g set python "/usr/bin/python2"
    
  • 0

    在WIN 8.1上

    好像我在package.json文件中使用了错误版本的mongoose .

    我从package.json中删除了行“mongoose”:“^ 3.8.15”

    CLI:npm install mongoose --save

    现在它在package.json中说“mongoose”:“^ 4.0.6”,我的错误消失了 .

  • 0

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

    nodejs vs node on ubuntu 12.04

    一旦我这样做,我重新运行这些命令:

    rm -rf node_modules
    npm cache clean
    npm install
    
  • 26

    只是想说我也有错误

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

    但没有其他错误 . 我尝试了一切,结果我在package.json文件中指定的mongodb驱动程序与我的MongoDB版本不兼容 . 我将它更改为我的最新版本(1.4.34)并且它有效!

  • 4

    所以在我的情况下,我首先尝试检查此目录/ node_modules / mongoose / node_modules /,只是为了确认我有 bson 模块 . 我发现我首先没有它,然后我就跑了

    npm install bson
    

    然后

    npm update
    

    所有都得到了排序 . 在Ubuntu中进行了测试和测试 .

  • 19

    sudo npm rebuild 是为我修好的 .

  • 2

    我终于通过在package.json中将我的mongodb依赖版本更新为“~2.0.36”来纠正此错误 .

    "dependencies": {
        "consolidate": "~0.9.1",
        "express": "3.x",
        "mongodb": "~2.0.36",
        "mongoose": "^4.1.12"
      }
    
  • 7

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

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

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

    这就像魔术!

  • 0

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

    Things to check:

    • MongoDB instance :您是否正在运行MongoDB实例?

    • Config :您是否正确配置了Mongoose到您的MongoDB实例?我怀疑你的配置是错误的,因为错误消息为你的mongodb服务器主机名吐出了一个非常奇怪的字符串 .

  • 200

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

    rm -rf node_modules
    npm cache clean 
    npm install
    
  • 0

    我跑了:

    sudo npm install bson
    

    sudo npm update
    

    一切都变好了 .

  • 36

    我也遇到了这个问题,导致我的会话无法正常工作 . 但是不要打破......

    我使用了猫鼬连接 .

    我有这个:

    var mongoose = require('mongoose');
    var express = require('express');
    var cookieParser = require('cookie-parser');
    var expressSession = require('express-session');
    var MongoStore = require('connect-mongo')(expressSession);
    ...
    var app = express();
    app.set('port', process.env.PORT || 8080);
    app.use(bodyParser);
    mongoose.connect('mongodb://localhost/TEST');
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function callback () {
      console.log('MongoDB connected');
    });
    
    
    app.use(cookieParser());
    app.use(expressSession({
      secret: 'mysecret',
      cookie: {
        maxAge: null,
        expires: moment().utc().add('days',10).toDate(),// 10 dagen
      },
      store: new MongoStore({
      db: 'TEST',
      collection: 'sessions',
    }),
    

    非常直截了当 . 但是req.session一直都是空的 .

    rm -rf node_modules
    npm cache clean
    npm install
    

    诀窍 . 注意你的package.json中没有'mongodb'!只是Mongoose和connect-mongo .

  • 99

    我在CentOS上解决了这个问题

    • sudo yum groupinstall "Development Tools"

    • sudo npm install -g node-gyp

    • rm -r node_modules

    • npm缓存清理

    • npm安装

  • 2

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

    sudo npm update
    

    在我的节点的顶级文件夹内项目 . 这解决了问题,一切都像新的一样

  • 8

    我遇到了这个问题,因为我在我的Git存储库中包含了node_modules文件夹 . 当我在另一个系统上重建node_modules时,它工作了 . 其中一个是运行Linux,另一个是OS X.也许他们有不同的处理器架构 .

  • 0

    我也遇到了同样的问题,我是Mac OSX用户 . 基本上,您需要确保已在Xcode中安装了Xcode和“命令行工具” .

    Xcode是免费的,可以在这里下载:https://developer.apple.com/xcode/downloads/

    安装Xcode后,打开它并单击下拉菜单中的“首选项”,然后单击“下载”图标 . 确保安装了“命令行工具” .

    然后像上面提到的所有其他用户一样运行以下命令:

    rm -rf node_modules
    npm cache clean
    npm install
    
  • 7

    我试图在虚拟机(vagrant)共享文件夹上运行节点 . 那是一个问题 . 我的主机是Windows,安装在Windows上的节点,就像一个魅力 . 因此,如果您使用的是虚拟机,请尝试在主机上运行节点服务器 .

  • 3

    我只是遇到了同样的问题,对我来说没什么用 . 错误显示 kerberos 导致问题,它是 mongoose 依赖项之一 . 由于我在Ubuntu上,我认为全局安装的软件包之间可能存在权限问题 - 在 /usr/lib/node_modules 中通过 sudo ,以及在用户空间上的那些 .

    我全局安装 mongoose - 当然 sudo ,一切都按预期开始工作 .

    附: kerberos 包现在也全局安装在 mongoose 旁边,但是我不记得我是否故意这样做 - 当我试图解决问题时,或者它是否从一开始就存在 .

  • 3

    我正在使用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
    
  • 0
  • 1

    我能够通过卸载和重新安装monk包来解决 . 初始安装似乎有一个损坏的mongodb / bson依赖 .

  • 7

    在ubuntu 14.04上我需要在/ usr / bin中创建一个链接,因为/ usr / bin / env正在寻找/ usr / bin / node

    ln -s / usr / bin / nodejs / usr / bin / node

    可以在每个目录的builderror.log中找到错误消息,以便消息:

    bson@0.2.21 install / usr / local / lib / node_modules / mongodb / node_modules / mongodb-core / node_modules / bson(node-gyp rebuild 2> builderror.log)|| (退出0)

    查看此文件以获取有关确切问题的更多信息

    /usr/local/lib/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/builderror.log

相关问题