[Javascript] 無法加載c ++ bson擴展


Answers

我剛剛解決了。

當您通過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模塊。

Question

總節點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)



我也遇到了這個問題,它導致我的會話不工作。 但不要打破...

我使用了貓鼬連接。

我有這樣的:

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'! 只是貓鼬和connect-mongo。




在WIN 8.1上

看來我在我的package.json文件中使用了一個錯誤版本的貓鼬。

我從package.json中刪除了“mongoose”行:“^ 3.8.15”

CLI:npm安裝貓鼬 - 保存

現在它說“mongoose”:package.json中的“^ 4.0.6”,我所擁有的錯誤消失了。




不幸的是,所有上述答案只是一半正確..花了很長時間來弄清楚這一點..

Mongoose bson通過npm安裝會引發警告並導致錯誤...

npm install -g node-gyp

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

這工作像魔術一樣!




我也遇到了同樣的問題,我是Mac OSX用戶。 基本上,您需要確保已經在Xcode中安裝了Xcode以及“命令行工具”。

Xcode是免費的,可以在這裡下載: https://developer.apple.com/xcode/downloads/https://developer.apple.com/xcode/downloads/

安裝Xcode之後,打開它並在下拉菜單中單擊“首選項”,然後單擊“下載”圖標。 確保安裝了“命令行工具”。

然後像上面提到的所有其他用戶一樣運行以下命令:

rm -rf node_modules
npm cache clean
npm install



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

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

至:

bson = require('bson');



我無法解決這個問題

到現在。 首先你必須有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

這解決了我的問題。




只是想說我也有錯誤

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

但沒有其他的錯誤。 我嘗試了一切,發現我在package.json文件中指定的mongodb驅動程序與我的MongoDB版本不兼容。 我將它改為我的最新版本(1.4.34),它工作正常!







對我來說,只需要在我的api目錄中運行這些命令:

rm -rf node_modules
npm cache clean 
npm install



我只是有同樣的問題,並沒有為我工作。 錯誤顯示kerberos導致了問題,這是mongoose依賴之一。 由於我在Ubuntu上,我認為可能會在全局安裝的軟件包(通過sudo/usr/lib/node_modules和用戶空間上的軟件包之間存在權限問題。

我在全球範圍內安裝了mongoose - 當然還有sudo ,一切都按預期開始工作。

PS kerberos軟件包現在也安裝在全球mongoose旁邊,但是我不記得我是否故意這樣做 - 當我試圖解決問題時,或者它是從一開始就存在的。




sudo npm rebuild是為我修復的。




我的EC2實例有同樣的問題。 我認為最初的原因是因為我在安裝Mongo時運行了一個Node實例。 我停止了Node服務,然後跑了

sudo npm update 

在我的節點項目的頂級文件夾內。 這解決了問題,一切都像新的一樣




我有這個問題,因為我在我的Git存儲庫中包含了node_modules文件夾。 當我重建其他系統上的node_modules時,它就起作用了。 其中一個運行Linux,另一個是OS X.也許他們有不同的處理器架構。




在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