javascript node js - 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)
나는 이것을 풀 수 없었다.
지금까지. 우선 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
그것은 나를 위해 문제를 해결했다.
WIN 8.1에서
내 package.json 파일에 몽구스의 잘못된 버전을 사용하는 것 같습니다.
package.json에서 "mongoose"라는 줄을 제거했습니다 : "^ 3.8.15"
CLI : npm install mongoose --save
이제는 "mongoose"라고 쓰여 있습니다 : package.json에서 "^ 4.0.6"과 내가 가진 오류가 사라졌습니다.
단지 내가 또한 오류가 있었다고 말하고 싶었다.
Failed to load c++ bson extension, using pure JS version
그러나 다른 오류는 없습니다. 모든 것을 시도해보고 package.json 파일에 지정했던 mongodb 드라이버가 내 버전의 MongoDB와 호환되지 않습니다. 나는 그것을 (1.4.34)이었던 나의 최신 버전으로 바꾸었다. 그리고 그것은 효과가 있었다!
sudo npm rebuild
는 나를 위해 그것을 고쳤다.
불행히도, 위의 모든 대답은 반만 맞습니다. 이것을 이해하는 데 오랜 시간이 걸렸습니다.
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
또한이 문제가있어서 세션이 작동하지 않습니다. 하지만 둘 중 하나를 깨지 않도록 ...
나는 몽구스 연결을 사용했다.
나는 이것을 가지고 있었다 :
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
트릭을 했어. 조심해, 너의 패키지에 몽고범이 없다. 그냥 몽구스와 연결 몽고.
EC2 인스턴스에서 동일한 문제가 발생했습니다. 나는 Mongo를 설치할 때 Node 인스턴스가 실행 되었기 때문에 초기 원인이라고 생각한다. 노드 서비스를 중단하고 실행했습니다.
sudo npm update
내 노드 프로젝트의 최상위 폴더 내부. 이 문제가 해결되었고 모든 것이 새로운 것과 같았습니다.
나는 /node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js의 10 행을 다음과 같이 변경했다.
bson = require('../build/Release/bson');
에:
bson = require('bson');
내 Git 저장소에 node_modules 폴더를 포함했기 때문에이 문제가 발생했습니다. 다른 시스템에서 node_modules 을 재구 축할 때 작동했습니다. 그들 중 하나는 다른 OS X 인 리눅스를 돌리고있었습니다. 다른 프로세서 아키텍처를 가지고 있었을 수도 있습니다.
나는 또한 같은 문제를 겪었고 나는 Mac OSX 사용자이다. 기본적으로 Xcode와 "명령 행 도구"를 Xcode에 설치했는지 확인해야합니다.
Xcode는 무료이며 여기 ( https://developer.apple.com/xcode/downloads/ 다운로드 할 수 있습니다.
Xcode를 설치 한 후 Xcode를 열고 풀다운 메뉴에서 "환경 설정"을 클릭 한 다음 "다운로드"아이콘을 클릭하십시오. "명령 행 도구"가 설치되어 있는지 확인하십시오.
그런 다음 위에서 언급 한 다른 모든 사용자와 마찬가지로 다음 명령을 실행하십시오.
rm -rf node_modules
npm cache clean
npm install
나는 지금 막 동일한 문제가 있고 문자로 아무것도 나를 위해 일하지 않았다. 이 오류는 kerberos
가 문제를 일으킨다는 것을 보여 주었고 mongoose
종속성 중 하나였습니다. 우분투에 있기 때문에 전 세계적으로 설치된 패키지 사이에 sudo
를 통한 /usr/lib/node_modules
와 사용자 공간에있는 권한 문제가있을 수 있다고 생각했습니다.
전 세계적으로 sudo
를 사용하여 mongoose
설치했고 모든 것이 예상대로 작동하기 시작했습니다.
추신 : kerberos
패키지는 현재 mongoose
옆에 전 세계적으로 설치되어 있습니다. 그러나 문제를 해결하려고 시도하거나 처음부터 거기에 있었다면 의도적으로했는지 기억이 나지 않습니다.
Windows 7.1의 경우 이러한 지침에 따라 빌드 환경을 수정하는 데 도움이되었습니다.
https://github.com/mongodb/js-bson/issues/58#issuecomment-68217275
http://christiankvalheim.com/post/diagnose_installation_problems/
우분투에서 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