확장에서 c++ b를 로드하지 못했습니다.
전체 노드 노브입니다.샘플 노드 앱을 설정하려고 했지만 실행할 때마다 다음 오류가 계속 나타납니다.
노드 앱
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)
mongodb 라이브러리를 설치할 때 make 도구를 사용할 수 없었던 것 같습니다.그렇게 하는 것이 좋습니다
xcode-select --install (Mac에서) 서는sudo apt-get install gcc make build-essentialunbuntu)(우분투)
그리고 실행
rm -rf node_modules
npm cache clean
npm install
또는 @tobias 설명을 기반으로 npm 업데이트만 수행(build-essential 설치 후)
npm update
방금 해결했습니다.
. npm mongoose 모듈은 built bson 모듈입니다.파서에 .node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js, 줄바꿈
bson = require('../build/Release/bson');
로.
bson = require('bson');
그런 다음 npm을 사용하여 bson 모듈을 설치합니다.
라즈베리안(라즈베리안의 데비안)에서 "c++ bson 확장을 로드하지 못함" 문제를 다음과 같이 분류했습니다.
npm install -g node-gyp
그리고 나서.
npm update
나는 이것을 해결할 수 없었습니다.
지금까지우선 Pradeep Mahdevu가 언급한 시스템 패키지가 있어야 합니다.다음과 같습니다.
xcode-select --install (on a mac)
또는
sudo apt-get install gcc make build-essential (on ubuntu)
그리고 노드집프를 설치했습니다
npm install -g node-gyp
데이터 트레이서가 말한 것처럼 하지만 그가 제안한 npm 업데이트도 위험합니다.위험할 수 있는 모든 모듈을 업데이트합니다(때로는 버전 간 API 변경).
node_modules/mongodb/node_modules/bson 디렉토리로 이동하여 사용할 것을 제안합니다.
node-gyp rebuild
그것으로 저는 문제를 해결했습니다.
2"gyp" Python 2.x가 입니다.python 3.x 파일을 .bson예고 없이설정을 통해 이 문제를 해결할 수 있습니다.python시스템의 2.x 실행 파일을 가리키는 npm 구성의 글로벌 키.들어 Linux의 다음과 .
npm config -g set python "/usr/bin/python2"
WIN 8.1에서
을 잘못 사용한 것 같습니다.package.jsonjava.
라인을 제거했습니다."mongoose" : "^3.8.15"package.json.
CLI:
npm install mongoose --save
은 는제이라고 써있습니다."mongoose": "^4.0.6"package.json그리고 내가 가졌던 오류는 사라졌습니다.
Ubuntu 14.04를 실행하고 있으며 이를 해결하기 위해 노드가 nodejs를 가리키는 심볼 링크를 생성해야 했습니다.
이 작업을 수행한 후 다음 명령을(를)
rm -rf node_modules
npm cache clean
npm install
그래서 저의 경우, 먼저 /node_modules/mongoose/node_modules/ 디렉토리에서 bson 모듈이 있는지 확인하려고 했습니다.애초에 가지고 있지 않다는 것을 알고는 그냥 도망쳤습니다.
npm 설치 bson
그리고 나서.
npm 업데이트
모든 것이 정리되었습니다.Ubuntu에서 사용해보고 테스트했습니다.
나도 오류가 있었다고 말하고 싶었어요.
Failed to load c++ bson extension, using pure JS version
하지만 다른 오류는 없습니다.저는 모든 것을 시도했고 제가 패키지에 지정한 몽고드 드라이버를 찾았습니다.json 파일이 내 버전의 MongoDB와 호환되지 않습니다.저는 그것을 (1.4.34) 최신 버전으로 바꿨고 작동했습니다!!!
sudo npm rebuild제가 고쳐준 것입니다.
나는 마침내 mongodb 의존성 버전을 ~2.0.36으로 업데이트하여 이 오류를 수정했습니다.package.json.
"dependencies": {
"consolidate": "~0.9.1",
"express": "3.x",
"mongodb": "~2.0.36",
"mongoose": "^4.1.12"
}
유감스럽게도 위의 모든 답변은 반만 맞습니다.이걸 알아내는 데 오랜 시간이 걸렸습니다.
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
이것은 마법처럼 작동합니다!!
저는 API 디렉토리에서 다음 명령만 실행하면 됩니다.
rm -rf node_modules
npm cache clean
npm install
방금 도망쳤어요.
sudo npm install bson
그리고.
sudo npm update
모든 것이 괜찮아집니다.
bson 확장 메시지는 경고일 뿐입니다. nodejs 응용 프로그램에서 항상 표시됩니다.
확인할 사항:
- MongoDB 인스턴스:실행 중인 MongoDB 인스턴스가 있습니까?
- 구성: MongoDB 인스턴스에 Mongoose를 올바르게 구성했습니까?오류 메시지가 mongodb 서버 호스트 이름에 대해 매우 이상한 문자열을 뱉기 때문에 구성이 잘못된 것 같습니다.
저는 CentOS에서 이 문제를 해결했습니다.
- sudoyum 그룹 설치 "개발 도구"
- sundpm install -g node-gip
- rm -r node_message
- npm 캐시 정리
- npm 설치
다음의 10행을 변경하여 수정했습니다.
/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
출처:
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',
}),
아주 직설적입니다.하지만 요청 세션은 항상 비어 있었습니다.
rm -rf node_modules
npm cache clean
npm install
속임수를 썼죠.패키지에 'mongodb'가 들어 있지 않은지 주의하십시오.json!몽구스랑 커넥트몽고만.
Ubuntu에서 문제를 해결한 방법은 다음과 같습니다.
ln -s /usr/bin/nodejs /usr/bin/nodenpm install node-gypcd node_modules/mongodb/node_modules/bsonnode-gyp rebuild
@mbochynski 답변에서 영감을 얻었지만, 저는 먼저 심볼릭 링크를 만들어야 했고, 그렇지 않으면 재구축이 실패했습니다.
번 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅠnpm intall내 평균 앱 폴더에서 작동했습니다.
Git 저장소에 node_modules 폴더를 포함하고 있었기 때문에 이 문제가 발생했습니다.다른 시스템에서 node_modules를 다시 구축했을 때 작동했습니다.그 중 하나는 리눅스, 다른 하나는 OS X를 실행하는 것이었습니다. 아마도 그들은 다른 프로세서 아키텍처를 가지고 있었을 것입니다.
EC2 인스턴스에서도 동일한 문제가 발생했습니다.초기 원인은 Mongo 설치 시 Node 인스턴스가 실행되었기 때문인 것 같습니다.노드 서비스를 중지하고 실행했습니다.
sudo npm update
내 노드 프로젝트의 최상위 폴더 내부.이것은 문제를 해결했고 모든 것이 새것과 같았습니다.
가상 시스템(부랑한) 공유 폴더에서 노드를 실행하려고 했습니다.그게 문제였어요.제 호스트 시스템은 Windows이고 Windows에 노드를 설치하고 아주 잘 작동합니다.따라서 가상 시스템을 사용하는 경우에는 호스트 시스템에서 노드 서버를 실행해 보십시오.
저도 같은 문제를 겪었을 뿐 말 그대로 아무 것도 저에게 효과가 없었습니다.오류가 표시되었습니다.kerberos문제를 일으키고 있고 그것은 문제 중 하나였습니다.mongoose종속 관계Ubuntu에 있기 때문에 글로벌하게 설치된 패키지 사이 어딘가에 권한 문제가 있을 수 있다고 생각했습니다./usr/lib/node_modules경유로sudo그리고 사용자 공간에 있는 것들.
설치했습니다.mongoose전 세계적으로 -- 와 함께.sudo물론, 모든 것이 예상대로 작동하기 시작했습니다.
추신: 더kerberos이제 패키지도 전체적으로 다음에 설치됩니다.mongoose하지만 저는 제가 문제를 해결하려고 노력하는 동안에 그것을 의도적으로 했는지, 아니면 처음부터 그것이 있었는지 기억할 수 없습니다.
나는 센트와 함께 도커에서 일하고 있습니다.OS 7에서 동일한 문제가 발생했습니다.
주변을 둘러보고 여러 번 시도한 후 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
Windows 7.1의 경우 다음과 같은 지침이 빌드 환경을 해결하는 데 도움이 되었습니다.
https://github.com/mongodb/js-bson/issues/58#issuecomment-68217275
http://christiankvalheim.com/post/diagnose_installation_problems/
Monk 패키지를 제거하고 다시 설치하여 해결할 수 있었습니다.초기 설치에서 mongodb/bson 종속성이 손상된 것 같습니다.
followint @user1548357 모듈 파일 자체를 변경하기로 했습니다.아래의 유효한 설명에서 지적된 문제를 피하기 위해 변경 사항을 설치 후 스크립트에 포함하여 설정하고 잊어버리고 모듈이 설치되었을 때 실행되도록 보장했습니다.
// package.json
"scripts": {
// other scripts
"postinstall": "node ./bson.fix.js"
},
대본은 다음과 같습니다.
// bson.fix.js
var fs = require('fs');
var file = './node_modules/bson/ext/index.js'
fs.readFile(file, 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
var result = data.replace(/\.\.\/build\/Release\/bson/g, 'bson');
fs.writeFile(file, result, 'utf8', function (err) {
if (err) return console.log(err);
console.log('Fixed bson module so as to use JS version');
});
});
block path 해결할 수 있습니다.node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
bson = require('bson'); instead
bson = require('./win32/ia32/bson');
bson = require('../build/Release/bson');
그게 다야!!!
Windows 7(x64)에서 도움이 되는 것은 https://stackoverflow.com/a/29714359/2670121 뿐입니다.
x32 버전의 노드 및 파이썬을 다시 설치합니다.
저는 이 오류로 많은 시간을 보냈습니다.
확장에서 c++ b를 로드하지 못했습니다.
으로 모듈을 node-gyp 위해) 그리고 스튜디오와 윈도우 도 했습니다. 된 모듈을 (nodejs는 윈도우 SDK - nodejs입니다.)bson.node해결됩니다.다시 설치하면 문제가 사라집니다.
다시 말하지만, 이 오류의 의미는 무엇을 의미합니까?
사실, 그것은 오류도 아닙니다.몽구스를 사용할 수 있습니다.하지만 이 경우에는 빠른 네이티브 인식 대신bson모듈, 당신은 가지고 있습니다.js-realization어느 쪽이 더 느리는지.
"node_modules 내부의 깊은 경로 편집"과 같은 많은 팁을 보았습니다.- 문제를 해결하지 않고 오류 메시지만 꺼놓기 때문에 전혀 쓸모가 없습니다.
언급URL : https://stackoverflow.com/questions/21656420/failed-to-load-c-bson-extension
'programing' 카테고리의 다른 글
| ASP.NET MVC 3 - 요청한 항목을 찾을 수 없습니다.Net Framework 데이터 공급자 (0) | 2023.07.29 |
|---|---|
| 숫자의 형식을 지정하는 방법? (0) | 2023.07.29 |
| JSONResponse를 사용하여 Django 1.7의 쿼리 세트를 직렬화하시겠습니까? (0) | 2023.07.24 |
| 내가 일하지 않는 걸 기억해줘요..java.dll을 던집니다.잘못된 상태 예외:사용자 세부 정보 서비스가 필요합니다. (0) | 2023.07.24 |
| spring.data source의 가능한 값은 무엇입니까?초기화 모드? (0) | 2023.07.24 |