[javascript] C ++ bson 확장을로드하지 못했습니다.


14 Answers

방금 해결 했어.

mongoose 모듈을 npm으로 설치할 때 폴더에 bson 모듈이 내장되어 있지 않습니다. node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js 에서 다음 행을 변경하십시오.

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

bson = require('bson');

npm을 사용하여 bson 모듈을 설치하십시오.

Question

여기 노드의 멍청한 놈. 나는 샘플 노드 응용 프로그램을 설정하려고 시도했지만 다음 오류는 실행을 시도 할 때마다 계속 나타나고 있습니다.

노드 앱

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)



나는 이것을 풀 수 없었다.

지금까지. 우선 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

그것은 나를 위해 문제를 해결했다.




나는 /node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js의 10 행을 다음과 같이 변경했다.

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

에:

bson = require('bson');



또한이 문제가있어서 세션이 작동하지 않습니다. 하지만 둘 중 하나를 깨지 않도록 ...

나는 몽구스 연결을 사용했다.

나는 이것을 가지고 있었다 :

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

트릭을 했어. 조심해, 너의 패키지에 몽고범이 없다. 그냥 몽구스와 연결 몽고.




sudo npm rebuild 는 나를 위해 그것을 고쳤다.




나는 또한 같은 문제를 겪었고 나는 Mac OSX 사용자이다. 기본적으로 Xcode와 "명령 행 도구"를 Xcode에 설치했는지 확인해야합니다.

Xcode는 무료이며 여기 ( https://developer.apple.com/xcode/downloads/ 다운로드 할 수 있습니다.

Xcode를 설치 한 후 Xcode를 열고 풀다운 메뉴에서 "환경 설정"을 클릭 한 다음 "다운로드"아이콘을 클릭하십시오. "명령 행 도구"가 설치되어 있는지 확인하십시오.

그런 다음 위에서 언급 한 다른 모든 사용자와 마찬가지로 다음 명령을 실행하십시오.

rm -rf node_modules
npm cache clean
npm install



단지 내가 또한 오류가 있었다고 말하고 싶었다.

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

그러나 다른 오류는 없습니다. 모든 것을 시도해보고 package.json 파일에 지정했던 mongodb 드라이버가 내 버전의 MongoDB와 호환되지 않습니다. 나는 그것을 (1.4.34)이었던 나의 최신 버전으로 바꾸었다. 그리고 그것은 효과가 있었다!




우분투에서 14.04 / usr / bin / env가 / usr / bin / node를 찾고 있었기 때문에 / usr / bin에 링크를 만들어야했습니다.

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

오류 메시지는 각 디렉토리의 builderror.log에서 찾을 수 있습니다.

bson@0.2.21 / 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







WIN 8.1에서

내 package.json 파일에 몽구스의 잘못된 버전을 사용하는 것 같습니다.

package.json에서 "mongoose"라는 줄을 제거했습니다 : "^ 3.8.15"

CLI : npm install mongoose --save

이제는 "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

이것은 마술처럼 작동합니다 !!




내게는 api 디렉토리에서 다음 명령 만 실행하면된다.

rm -rf node_modules
npm cache clean 
npm install



내 Git 저장소에 node_modules 폴더를 포함했기 때문에이 문제가 발생했습니다. 다른 시스템에서 node_modules 을 재구 축할 때 작동했습니다. 그들 중 하나는 다른 OS X 인 리눅스를 돌리고있었습니다. 다른 프로세서 아키텍처를 가지고 있었을 수도 있습니다.




EC2 인스턴스에서 동일한 문제가 발생했습니다. 나는 Mongo를 설치할 때 Node 인스턴스가 실행 되었기 때문에 초기 원인이라고 생각한다. 노드 서비스를 중단하고 실행했습니다.

sudo npm update 

내 노드 프로젝트의 최상위 폴더 내부. 이 문제가 해결되었고 모든 것이 새로운 것과 같았습니다.




나는 지금 막 동일한 문제가 있고 문자로 아무것도 나를 위해 일하지 않았다. 이 오류는 kerberos 가 문제를 일으킨다는 것을 보여 주었고 mongoose 종속성 중 하나였습니다. 우분투에 있기 때문에 전 세계적으로 설치된 패키지 사이에 sudo 를 통한 /usr/lib/node_modules 와 사용자 공간에있는 권한 문제가있을 수 있다고 생각했습니다.

전 세계적으로 sudo 를 사용하여 mongoose 설치했고 모든 것이 예상대로 작동하기 시작했습니다.

추신 : kerberos 패키지는 현재 mongoose 옆에 전 세계적으로 설치되어 있습니다. 그러나 문제를 해결하려고 시도하거나 처음부터 거기에 있었다면 의도적으로했는지 기억이 나지 않습니다.



Related