모듈 '../build/Release/bson'을 찾을 수 없습니다.] 코드 : 'MODULE_NOT_FOUND'} js-bson : 순수 JS 버전을 사용하여 c ++ bson 확장을로드하지 못했습니다.


156

아래 오류가 발생합니다.

{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' } 
  js-bson: Failed to load c++ bson extension, using pure JS version

내 버전 세부 정보는 다음과 같습니다.

  • 운영체제 : Windows 7

  • MongoDB : 2.6.5

  • 노드 : 0.12.0

여기에 문제를 게시하기 전에 이러한 것들을 시도했습니다.

  1. 나는에 가서 \node-modules\mongoose\node-modules\mongodb\node-modules\bson폴더에서 바인딩 활력 파일에 변경하려면 아래 만들어 'include_dirs': [ '<!(node -e "require(\'nan\')")' ]'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]

  2. 이 명령을 실행 npm install -g node-gyp

  3. 몽구스 버전을 3.8.21로 업데이트했습니다. package.json

아무것도 작동하지 않습니다. 제안 해주세요


2
나는 당신이 제안한 아래의 옵션을 시도했지만 아무 소용이 없습니다. 오류 {[오류 : 모듈 '../build/Release/bson'을 (를) 찾을 수 없습니다.] 코드 : 'MODULE_NOT_FOUND'} js-bson : 순수 JS 버전 c : \ raj \ project를 사용하여 c ++ bson 확장을로드하지 못했습니다. \ meandemo \ node_modules \ express \ lib \ router \ route.js : 170 throw new Error (msg); ^ 오류 : Route.get는 () 콜백 기능이 필요하지만 경로에서 [객체 정의되지 않음]을 가지고 <익명>.
navra


1
이 솔루션을 참조하십시오. 작동하기를 바랍니다! C ++ BSON 확장은 다른 여러 모듈에도 필요합니다. 이 솔루션은 Microsoft-OS Win-7 전용입니다. stackoverflow.com/a/29714359/4154706
aitchkhan

이 질문에 대한 답변도 확인하십시오 : c ++ bson 확장을로드하지 못했습니다
totymedli

답변:


165

npm 모듈 mongodb에서 찾기 :

.. \ node_modules \ mongodb \ node_modules \ bson \ ext \ index.js

catch 블록에서 js 버전으로 경로를 변경하십시오.

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

에:

bson = require('../browser_build/bson');

또는 다음 위치에 파일을 복사하십시오.

.. \ node_modules \ bson \ build \ Release \ bson

에서:

.. \ node_modules \ bson \ browser_build \ bson


1
대박! 그러나 지역 환경이므로 어쨌든 비극은 일어나지 않아야합니다.
Manatax

4
bson = require ( '../../../ browser_build / bson.js');
robor78

25
이것은 해결책이 아닙니다. 동일한 결과로 오류를 인쇄하는 문자열을 제거 할 수 있습니다. 이 오류는 bson에 대한 네이티브 c ++ 플러그인으로 인해 나타나지 않으며이 경우 js 구현이 사용됩니다.
Alendorff

4
@Alendorff 사실이지만 대부분의 사람들이 찾는 것입니다. C ++ 플러그인에 신경 쓰지 않습니다. 노드 인스펙터가 깨지기 때문에 경고를 없애고 싶습니다. 이 관점에서, 오류 (인쇄 오류 제거) 제안도 해결책입니다. 오류가 아니어야하기 때문에 코드가 JS 폴백에서 제대로 작동합니다.
totymedli

3
죄송합니다. 여기에서 두 번째로 가장 좋은 답변은 실제로 해킹이없는 올바른 솔루션입니다. 깨지지 않은 버전의 패키지를 설치하십시오!
jrista

70

오늘이 문제가 있었으며 (2016 년 2 월 19 일) 최신 버전의 몽구스를 설치하여 해결했습니다. 이것을 package.json에 넣으십시오.

"mongoose": "~4.4"

희망이 도움이됩니다. 나를 위해 해결했습니다!


1
나를 위해 일했다. 나는 오래된 몽구스 버전에 문제가 있다고 생각한다. IMO 이것이 정답이어야합니다.
Edward Newell 2016 년

8
우수 답변, 모듈 내에서 코드 편집에 대한 다른 모든 것들 해킹은하지 솔루션
자전거

2
node_modules / mongodb 등을 엉망으로 만들 필요가없는 가장 간단한 솔루션입니다. 감사합니다!
mikeym

1
가장 좋은 방법 중 하나 인 mongoose (npm uninstall mongoose)를 제거하고 다시 설치하십시오 (npm install mongoose)
Grijan

18

문제는 npm을 통해 mongoose를 설치할 때 Windows에 Python이 설치되어 있다고 가정하고 필요한 라이브러리를 작성하려고 시도한다는 것입니다. 파이썬이 없기 때문에 경고와 함께 빌드 단계를 건너 뜁니다. 그러나 응용 프로그램을 시작할 때 필요한 모듈이 없으므로이 오류가 발생합니다.

https://www.python.org/downloads/ 에서 컴퓨터에 python (버전 2.7)을 먼저 설치 하거나 chockolatey를 설치 한 경우을 입력하십시오 choco install python2.

그런 다음 파이썬 변수가 설정되어 있는지 확인하십시오. 명령 프롬프트에서 다음과 같이 설정할 수 있습니다.

SET python=D:\Python27\python.exe

(물론 파이썬의 위치에 따라 경로를 변경해야합니다) 그런 다음 node-gyp을 설치하십시오.

npm install -g node-gyp

이제 몽구스 또는 문제를 일으키는 모든 모듈을 다시 설치할 수 있습니다.

npm install mongoose

이번에는 빨간색 대신 노란색 선이 표시되지만 오류는 사라집니다.


2
파이썬 버전이 중요합니다. 노드 활력 3.0> 버전으로 작동하지 않습니다
MatthieuLemoine

1
이것은 완전한 솔루션이 아닙니다 ... 여전히 다음과 같은 오류가 발생합니다. MSBUILD : 오류 MSB3428 : Visual C ++ 구성 요소 "VCBuild.exe"를로드 할 수 없습니다.
orszaczky 2016 년

@TheRebel 대 2010 툴체인을 가정합니다. 설치 한 내용에 따라 추가 --msvs-version=2012또는 추가하십시오 2013e. 예 :npm install mongoose --msvs-version=2012
RichieRich

heroku 클라우드에 노드 앱을 배포하는 경우 수행 할 작업
jsbisht

15

mogoose 버전을 설치 하여이 문제를 해결했습니다. 3.8.23

npm install mongoose@3.8.23

여기서 일했습니다. 이전 버전입니까? 왜 효과가 있었습니까?
Victor Ferreira

15

이것은 나를 위해 일했습니다. 작업 공간에서 텍스트를 검색하십시오.

"../build/Release/bson"

당신은 아마도 몽구스와 몽크 모듈에서 그것을 찾을 것입니다.

그런 다음 각각을 교체하십시오.

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

와:

bson = require('bson');

그게 다야!


meanjs를 사용하여 프로젝트를 설정 한 후 기본 테스트를 실행하려고하면이 오류가 발생했습니다. 이것은 그것을 고쳤다. 감사.
RaneWrites

7

시도 npm install mongoose@3.8.23또한 교체 bson = require('../build/Release/bson');

bson = require('../browser_build/bson'); node_modules / bson / ext / index.js에서


bson.js의 경로가 올바른지 확인하십시오. 나에게 bson = require ( '../ browser_build / bson.js'); 일했다. 또한 설치를 시작하기 전에 버전 몽구스를 확인하십시오.
Vikram Shetty

7

이것은 나를 위해 일했다 :

파일로 이동하십시오 (프로젝트에서).

node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js

변경 :

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

에:

bson = require('bson');

참조 : https://github.com/mongodb/js-bson/issues/118


2
이 수정 프로그램을 어떻게 유지 했습니까? node_modules디렉토리를 소스 제어로 체크인 했습니까 ?
Mark Stosberg

7

짧은 답변

최신 버전의 mongodb를 설치하십시오.

조금 더 답변

package.json이 최신 버전의 mongodb를 사용 중인지 확인한 후 node_modules / mongodb를 제거하고 npm 설치를 다시 수행하십시오. mongodb를 직접 종속성으로 사용하지 않은 경우 mongdb를 사용하는 패키지를 찾으십시오. 나는 사용했다 :

find . -type f -name package.json | xargs grep mongodb
...
./sails-mongo/package.json:    "mongodb": "1.4.26",
...

그래서 ./sails-mongo/package.json을 다음과 같이 업데이트했습니다.

"mongodb": "2.1.7",

그런 다음 node_modules / mongodb를 제거하고 npm 설치를 다시 수행하십시오. 지금은 잘 보인다.

더 긴 답변

현재 제안 된 사용 방법이 마음에 들지 않습니다.

require('../browser_build/bson')

4k + 라인 파일 인 ../browser_build/bson.js를 살펴본 후 "비 기본"구현으로 보입니다. 따라서 불만을 제기하지는 않지만 여전히 "순수 JS 버전 사용"으로 인해 성능이 저하됩니다.

보면 https://github.com/mongodb/js-bson/issues/145https://github.com/mongodb/js-bson/issues/165 문제가 발생 것처럼 것 같습니다 :

antoniofruci 님이 2015 년 9 월 15 일에 댓글을 달았습니다

방금 c ++ 코드가 6 개월 전에 옮겨졌으며 이제 선택적 종속성 인 bson-ext가 있음을 알았습니다. 실제로 최신 버전을 설치하면 오류가 발생하지 않습니다.

그래서 전체 node_modules를 제거하려고 시도했지만 여전히 같은 오류가 발생했습니다. node_modules / mongodb의 package.json을 보면 그 버전은 1.4.26이며 최신 2.1.7이 아닙니다.

분명히 내 mongodb는 내가 설치 한 다른 패키지 인 sails-mongo의 종속성으로 제공됩니다. sails-mongo의 package.json을 수정하고 npm 설치를 다시 실행하면 문제가 해결됩니다.


6

Keystone JS CMS 배포 동일한 오류가 발생했으며 가장 우아한 해결책은 다음과 같습니다.

설치 npm-check-updates:

root@keystonejs:~# npm install -g npm-check-updates

키스톤 사이트 디렉토리 내에서 package.json종속성을 확인하십시오.

debian@keystonejs:~/myproject/manalcjim$ npm-check-updates -u

그런 다음 모든 패키지를 업데이트하십시오.

debian@keystonejs:~/myproject/manalcjim$ npm install

마지막으로 jade템플릿 을 선택한 경우 jade모듈을 명시 적으로 설치해야 할 수도 있습니다 .

debian@keystonejs:~/myproject/manalcjim$ npm install jade --save

5

표시된 답변이 완전히 잘못되었습니다. 콘솔 로그 문을 숨기고 실제로 문제를 해결하는 것은 없습니다. 눈을 감 으면 같은 결과를 얻을 수 있습니다.

이 문제는 node-gyp에 의해서만 발생합니다. 그 목적은 bson과 같은 특정 모듈에 대한 기본 확장을 컴파일하는 것입니다.

그렇게하는 것이 실패 할 경우 다음 코드는 JS 버전으로 폴백하고 친절하게 정보 메시지를 통해 이렇게 말씀 :

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

나는 메시지를 보지 않고 네이티브 C ++ 확장을 컴파일하는 방법에 대한 질문이라고 생각합니다.

node-gyp가 작동하려면 node-gyp가 노드 및 C ++ 컴파일러 (OS에 따라 다름)로 최신 상태 여야합니다. 마찬가지로 모듈도 최신 상태 여야합니다.

먼저 node-gyp를 제거한 후 다시 설치하십시오.

npm un node-gyp -g;npm i node-gyp -g

이제 bson이있는 앱의 노드 모듈 (요구 사항에 의해 설치된 모듈도 포함)을 완전히 제거했다가 다시 설치해야합니다. 오류를 처리해야합니다. '해제 / bson'을 검색하고 범인을 찾을 수 있습니다.

find node_modules/ -type 'f' -exec grep -H 'Release/bson' {} \;

그런 다음이 모듈을 제거했다가 다시 설치하십시오.

전체 node_modules폴더를 다시 실행하는 것이 더 쉽습니다 .

 rm -rf node_modules
 npm cache clear
 npm i

여전히 문제가 발생하면 1) 모듈이 오래되었습니다-저장소에서 문제 추적기를 확인하거나 2) 잠재적 충돌이 있습니다-때로는 로컬 노드-gyp가있을 수 있습니다. node-gyp자체적으로 실행 하고 버전을 확인할 수 있습니다.


5

www.spotdekho.comwindows10컴퓨터 에서 설정을 작성하는 동안 "nodemon web.js" 동일한 오류로 인해 명령을 실행할 수 없습니다

"오류 : '../build/Release/bson'모듈을 찾을 수 없습니다"

아래 단계로 수정했습니다.

  1. "node_modules \ bson \ build \"위치에 "릴리스"폴더를 만듭니다.
  2. "node_modules \ bson \ browser_build \"에서 bson.js를 복사하십시오.
  3. "node_modules \ bson \ build \ Release"폴더에 bson.js를 붙여 넣습니다.

문제가 해결됩니다.

추신 : 몽구스 버전 4.8.8을 사용하고 있습니다.

고마워 :), 그것이 누군가를 돕기를 바랍니다.


4

필자의 경우 mongoose ( npm install mongoose) 와 함께 제공되는 비트 mongodb에는 해당 node_modules폴더에 패키지 의 작동 버전이 있습니다.

다음 단계는 문제 해결 작업을 저장했습니다.

  • npm install mongoose
  • 복사 node_modules\mongoose\node_modules\mongodb내 루트에 node_modules폴더 (와 함께 제공된 버전을 덮어 쓰기 npm install mongodb)
  • Failed to load c++ bson extension...오류를 무시 하거나 문제에서 자동으로 코드를 변경하십시오.

3

이와 같은 오류가 발생하면 노드 v0.10에서 노드 v4.xx로 업그레이드하고있었습니다. 내가해야 할 일은 최신 버전의 gcc를 설치하는 것이 었습니다 (gcc v4.4.x 또는 다른 것이 있다고 생각합니다). 나는 gcc 4.7.2로 업데이트했고 그 이후에는 효과가있었습니다.


3

bson에서도 같은 문제가있었습니다.

최신 몽구스 버전 시도

npm install mongoose@4.4

문제를 해결했습니다.

마시모.


3

mongoose를 제거하려면이 명령을 실행하십시오. 그런 npm uninstall --save mongoose다음 다시 설치하지만 이번에는 npm자동으로 최신 버전의 mongoose run을 설치합니다 npm install --save mongoose.


2

불행히도, 위의 모든 답변은 절반 만 맞습니다. 이것을 알아 내기 위해 오랜 시간이 걸렸습니다 ..

npm을 통한 몽구스 bson 설치는 경고를 발생시키고 오류를 발생시킵니다 ...

npm install -g node-gyp

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

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


2

Windows 8.1을 사용하는 경우 올바른 Visual Studio 컴파일러를 사용하여 npm 모듈을 설치해야합니다.

Visual Studio 2012가 설치되어 있는데이 명령이 적합합니다. (node_modules 디렉토리 삭제 후)

npm 설치 --msvs_version = 2012

어떤 이유로 node-gyp가 잘못된 버전의 Visual Studio 컴파일러를 사용하려고합니다. 또한 mongodb 및 mongoose 모듈을 설치할 때 "npm install"명령이 node-gyp 종속성이 아니라는 경고를 출력하는 것으로 나타났습니다.

올바른 msvs_version을 사용한 후 nodejs 앱을 실행할 때 npm 설치 경고와 콘솔 경고가 사라졌습니다.

Python 3.0.X가 아닌 올바른 Python 2.7.X 버전이 설치되어 있는지 확인할 수도 있습니다.

또한 파이썬이 env 경로에 있는지 확인해야합니다.


이것은 Visual Studio Community Edition 2013이 설치된 Windows 8.1에서 다음을 사용하여 작동했습니다.npm install --msvs_version=2012
phocks

2

Windows 7 (x64)에서 나를 돕는 유일한 방법 : https://stackoverflow.com/a/29714359/2670121

x32 버전으로 노드 및 파이썬을 다시 설치하십시오.
나는이 오류 (c ++ bson 확장 프로그램을로드하지 못했습니다)와 많은 시간을 보냈습니다. 마지막으로 모듈을 설치하고 node-gyp(기본 애드온을 빌드하기 위해) Visual Studio로 Windows SDK를 설치 했을 때 -nodejs가 모듈 bson.node를 모듈로 인식하지 못했습니다. 재설치 후 문제가 사라졌습니다.

다시,이 오류는 무엇을 의미합니까?

실제로, 그것은 오류가 아닙니다. 여전히 몽구스를 사용할 수 있습니다. 그러나이 경우 bson 모듈의 빠른 기본 구현 대신 js-realization이 생겨 느려집니다. "node_modules 내부의 경로 편집 ..."과 같은 많은 팁을 보았습니다. 문제를 해결하지 않고 오류 메시지를 해제했기 때문에 전혀 쓸모가 없습니다.



1

NODE_MODULES 라이브러리 폴더에서 파일을 변경해서는 안됩니다.

그 파일들은 npm install 명령의 .

기본적으로 Windows 사용자에게는 VM을 사용하는 것이 올바른 방법이라고 생각합니다. 집에서 일할 때하는 일입니다.

당신이 필요로하는 모든:

for CentOS: yum install gcc gcc-c++ make openssl-devel

for Debian/Ubuntu: apt-get install build-essential

그런 다음 npm install또는 이미 완료 한 경우-npm update


그는 Windows 7을 사용하는 질문에서 바로 말합니다. CentOS 및 Debian 명령은 어떻게 도움이됩니까?
Thronk

1
아 진짜. 나는 그 태그를 보지 못했다
Victor Perov 7 :

1

나에게 가장 좋은 해결책은 node-mongodb 1.x에서 2.x로 업그레이드하는 것이 었습니다.


1

이 스레드는 1 년 이상 된 것으로 알고 있지만 다른 모듈이지만 도움이되었습니다.

mongoose-post-findv0.0.2를 설치 했으며이 문제가 시작되었습니다. 문제를 해결하기 위해 제안 사항을 사용하고 \ node_modules \ mongoose-post-find \ node_modules \ bson \ ext로 이동하여 index.js 파일을 열었습니다.

파일은 올바른 bson 버전을 요구하는 try catch 블록으로 시작합니다.

try {
    // Load the precompiled win32 binary
    if(process.platform == "win32" && process.arch == "x64") {
      bson = require('./win32/x64/bson');  
    } else if(process.platform == "win32" && process.arch == "ia32") {
      bson = require('./win32/ia32/bson');  
    } else {
      bson = require('../build/Release/bson');  
    }   
} catch(err) {
    // Attempt to load the release bson version
    try {
        bson = require('../browser_build/bson');
    } catch (err) {
        console.dir(err)
        console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
        bson = require('../lib/bson/bson');
    }
}

이것은 올바른 버전입니다. 무슨 일이 있었는지 ../build/Release/bson에서 bson을로드하려고 시도했지만 찾을 수 없었고 캐치에 빠졌습니다. ../build/Release/bson에서 bson을 다시로드하려고 시도했지만 물론 실패했습니다. 따라서 캐치의 경로를 변경하여 ../browser_build/bson을 찾습니다. 이것은 오류를 해결했습니다.

나는 이것을 완전성을 위해 게시합니다.


1

우분투 버전을 16.04로 업그레이드 한 후 동일한 문제가 발생했습니다. 나는 이런 식으로 해결했다. 그것이 도움이되기를 바란다.

$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install

1

우리의 경우, c ++ 버전 bson을 찾을 수 없었던 이유는 회사 프록시 뒤에 있었고 BSON 빌드 프로세스에서 파일을 가져 오기 위해 도달해야하기 때문입니다. node_modules / bson / builderror.log를 살펴보면 다음과 같은 오류가 발생했습니다.

gyp WARN install got an error, rolling back install gyp ERR! configure error gyp ERR! stack Error: connect ECONNREFUSED gyp ERR! stack at errnoException (net.js:904:11) gyp ERR! stack at Object.afterConnect [as oncomplete] (net.js:895:19)

프록시가 문제 일 수 있음을 제안했습니다. http_proxy 및 https_proxy 환경 변수를 설정하면 해결되었습니다.

이것에 대한 의견을 다시 깨우쳐 서 죄송합니다.이 스레드가 우리의 문제를 해결하는 데 매우 도움이 되었기 때문에 앞으로이 문제를 해결할 다른 사람을 위해 이것을 게시하고 싶었습니다.


0

시도한 npm install mongoose --msvs_version = 2012, Visual이 여러 개인 경우 나에게 효과적입니다.


0

첫 번째bson.js 코드 복사browser_build folder

두 번째로 새 파일을 bson.js만들고 붙여 넣기 코드

세 번째에 가까운 새 파일을 저장하십시오 index.js.


0

OS Windows 8.1에서 작업하고 있는데 같은 문제가 있습니다. 문제의 원인은 파이썬 버전이었습니다. 원본 문제가 ... \ node_modules \ mongodb \ node_modules \ mongodb-core \ node_modules \ kerberos \ builderror.log 파일을 검토하는 것을 발견했습니다.

올바른 버전의 Python (64 비트의 경우 2.7.9)을 설치했으며 문제가 해결되었습니다.

참고 : 설치된 Python 버전은 2.7.5 이상 3.0.0 미만이어야합니다.


0

시도 bson = require('../browser_build/bson');했지만 다른 오류가 발생했습니다.

정의되지 않은 'BSON_BINARY_SUBTYPE_DEFAULT'속성을 설정할 수 없습니다

마지막으로이 문제를 간단하게 npm update수정하여 몽구스의 bson 모듈을 수정합니다.


0

따라서 동일한 문제가 발생하여 지정된 mongoDB URL이 존재하지 않습니다. 따라서이 문제를 해결하려면 ".. \ server \ config \ environment"폴더로 이동하여 "development.js"파일에서 mongoDB에 대한 링크를 편집해야합니다.

예:

// Development specific configuration
// ==================================
module.exports = {
  // MongoDB connection options
  mongo: {
    uri: 'mongodb://localhost/test2-dev'
  },

  seedDB: true
};

따라서이 "uri : 'mongodb : // localhost / test2-dev'"를 mongoDB 데이터베이스의 실제 경로로 변경하십시오.

내 게시물이 누군가를 도울 수 있다면 기쁠 것입니다 ...


0

npm 모듈 mongodb에서 찾으십시오. ..node_modules \ mongodb \ node_modules \ bson \ ext \ index.js

catch 블록에서 js 버전으로 경로 변경

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

bson = require('../browser_build/bson');

try {
        // Load the precompiled win32 binary
        if(process.platform == "win32" && process.arch == "x64") {
          bson = require('./win32/x64/bson');  
        } else if(process.platform == "win32" && process.arch == "ia32") {
          bson = require('./win32/ia32/bson');  
        } else {
         bson = require('../browser_build/bson');  
        }   
    } catch(err) {
        // Attempt to load the release bson version
        try {
            bson = require('../browser_build/bson');
        } catch (err) {
            console.dir(err)
            console.error("js-bson: Failed to load c++ bson extension, using pure JS version");
            bson = require('../lib/bson/bson');
        }
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.