web-dev-qa-db-ja.com

モジュール '../build/Release/bson']コードが見つかりません: 'MODULE_NOT_FOUND'} js-bson:純粋なJSバージョンを使用して、c ++ bson拡張子のロードに失敗しました

以下のエラーが出ます。

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

これが私のバージョンの詳細です:

  • OS:Windows 7

  • MongoDB:2.6.5

  • ノード:0.12.0

この記事を掲載する前に、これらのことを試してみました。

  1. \node-modules\mongoose\node-modules\mongodb\node-modules\bsonフォルダに移動し、binding-gypファイルを'include_dirs': [ '<!(node -e "require(\'nan\')")' ]から'include_dirs': ["<!(nodejs -p -e \"require('path').dirname(require.resolve('nan'))\")"]に変更しました。

  2. このコマンドを実行しましたnpm install -g node-gyp

  3. package.jsonの中でmongooseのバージョンを3.8.21に更新しました。

何も動作しません。提案してください

155
navra

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

163
anydasa

私は今日(2016年2月19日)この問題を抱えていて、Mongooseの最新版をインストールすることによってそれを解決しました。これをあなたのpackage.jsonに入れてみてください。

"mongoose": "~4.4"

それが役立つことを願っています。私のためにそれを解決しました!

69
Matt West

問題は、npmでmongooseをインストールするときに、あなたのウィンドウにpythonがインストールされていると仮定し、必要なライブラリを構築しようとすることです。あなたはpythonを持っていないので、警告を出して構築段階をスキップします。しかし、あなたがあなたのアプリケーションを起動するとき、必要なモジュールがそこにないので、あなたはこのエラーを受けます。

正しいことをするためには、まずpython(version 2.7)をあなたのコンピューターにインストールしてください。 https://www.python.org/downloads/ またはchoco install python2とタイプするだけでchockolateyをインストールしました。

それからpython変数が設定されていることを確認してください。あなたはコマンドプロンプトでそれを設定することができます:

SET python=D:\Python27\python.exe

(もちろん、あなたはpythonのあなたの場所に従ってパスを変更するべきです)それからnode-gypをインストールしてください:

npm install -g node-gyp

これで、mongooseまたは問題の原因となっているモジュールを再インストールできます。

npm install mongoose

今回は赤い線ではなくいくつかの黄色い線が表示されますが、エラーは消えます。

18
salihcenap

私はmogooseバージョン3.8.23をインストールすることによってこの問題を解決しました

npm install [email protected]
15
Rishabh Garg

これは私のために働きました。ワークスペース内でテキストを検索します。

"../build/Release/bson"

あなたはおそらくそれをmongoseとmonkモジュールの中に見つけるでしょう。

その後、それぞれ交換してください。

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

と:

bson = require('bson');

それで全部です!

15
kahlal

短い答え

最新バージョンのmongodbをインストールしてください。

もう少し答え

Package.jsonが最新バージョンのmongodbを使用していることを確認してから、node_modules/mongodbを削除し、もう一度npm installを実行してください。直接の依存関係として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 installを実行します。今大丈夫だ。

さらに長い答え

現在提案されている使い方は嫌いです

require('../browser_build/bson')

../browser_build/bson.js、4k + linesファイルを見て以来、これも "ネイティブではない"実装のようです。それで、それはどんな不満も吐き出さないでしょうが、それはまだ「純粋な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インストールをやり直すことで、問題は解決しました。

7
Peter

npm install [email protected]を試して、またbson = require('../build/Release/bson');をに置き換えてください

node_modules/bson/ext/index.js内のbson = require('../browser_build/bson');

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

7
Franco

Keystone JS CMSのデプロイ私は同じエラーを抱えています、そして最もエレガントな解決策はこれだと思います:

npm-check-updatesをインストールしてください。

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

package.jsonが配置されているkeystoneサイトディレクトリ内で、依存関係を確認します。

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

それからすべてのパッケージを更新します。

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

そして最後にテンプレートとしてjadeを選択した場合、おそらくjadeモジュールを明示的にインストールする必要があります。

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

マークされた答えは全く間違っています。コンソールログステートメントを隠し、実際の問題に対処しても何もしません。あなたはまたあなたの目を閉じることができ、それは同じ結果を達成するでしょう。

この問題は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

今、あなたは完全にあなたのアプリ内のすべてのノードモジュール(要件によってインストールされたモジュールも含む)を完全にアンインストールして再インストールする必要があるでしょう。それは間違いを大事にするべきです。あなたは 'Release/bson'を検索して犯人を見つけることができます。

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

その後、これらのモジュールをアンインストールしてから再インストールします。

簡単なのはnode_modulesフォルダ全体を単にやり直すことです。

 rm -rf node_modules
 npm cache clear
 npm i

それでも問題が解決しない場合は、1)あなたのモジュールが古くなっている - それらのレポジトリでissue trackerをチェックする、または2)競合がある可能性があります - 時には例えばローカルのnode-gypがあるかもしれません。 node-gypを単独で実行してバージョンを確認できます。

5
cyberwombat

新しいwww.spotdekho.comマシンでwindows10のセットアップを作成中に、同じエラーが原因でコマンド"nodemon web.js"を実行できませんでした

"エラー:モジュール '../build/Release/bson'が見つかりません"

以下の手順で修正しました。

  1. "node_modules\bson\build \"の中に "Release"というフォルダを作成します。
  2. "node_modules\bson\browser_build \"からbson.jsをコピーします。
  3. "node_modules\bson\build\Release"フォルダ内にbson.jsを貼り付けます。

これで問題は解決します。

シモンズ:私はマングースのバージョン4.8.8を使用しています。

ありがとう:)、それが誰かに役立つことを願っています。

5
Spotdekho

私の場合、mongoose(npm install mongoose)に付属のビットのnode_modulesフォルダには、作業バージョンのmongodbパッケージがあります。

次の手順を実行すると、問題のトラブルシューティング作業を節約できました。

  • npm install mongoose
  • 私のルートのnode_modules\mongoose\node_modules\mongodbフォルダにnode_modulesをコピーします(npm install mongodbに付属しているバージョンを上書きします)
  • Failed to load c++ bson extension...エラーを無視します(または、問題が発生しないようにコードを変更します)。
4
Michael

このようなエラーが発生したときは、ノードv0.10からノードv4.x.xにアップグレードしていました。私がしなければならなかったのはgccの新しいバージョンをインストールすることでした(私はgcc v4.4.xか何かを持っていたと思います)。私はgcc 4.7.2にアップデートしましたが、その後はうまくいきました。

3
B T

私もbsonについて同じ問題を抱えていました。

新しいマングースバージョンを試す

npm install [email protected]

問題を解決しました。

マッシモ。

3
Max Tamtam

このコマンドを実行してmongoose npm uninstall --save mongooseをアンインストールします - その後、それを再インストールしますが、今度はnpmが自動的に最新バージョンのmongoose run npm install --save mongooseをインストールしますこれは私にとってはうまくいきました。

3
otoloye

Windows 7(x64)で私を助けてくれる唯一のもの: https://stackoverflow.com/a/29714359/2670121

X32バージョンでnodeとpythonを再インストールしてください。
私はこのエラーに多くの時間を費やし(c ++ bson拡張モジュールのロードに失敗しました)、そして最後にモジュールnode-gyp(ネイティブアドオンのビルド用)をインストールしました。モジュールとしてbson.node。再インストール後、問題は解決しました。

繰り返しますが、このエラーはどういう意味ですか?

実際には、それは間違いではありません。あなたはまだマングースを使用することができます。しかし、この場合、bsonモジュールの高速ネイティブ実現の代わりに、js実現が遅くなります。 「node_modulesの内側のパスを編集...」のような多くのヒントを見ました - 問題を解決するのではなく、単にエラーメッセージを表示しないため、これはまったく役に立ちません。

2
Alendorff

Windows 8.1を使用している場合は、正しいVisual Studioコンパイラを使用してnpmモジュールをインストールしていることを確認してください。

Visual Studio 2012がインストールされています。このコマンドは役に立ちます。 (node_modules dirを削除した後)

npm install --msvs_version = 2012

何らかの理由で、node-gypが誤ったバージョンのVisual Studioコンパイラを使用しようとしています。私はまた、 "npm install"コマンドが、mongodbおよびmongooseモジュールをインストールするときに、node-gyp依存関係ではないという警告を出力していたことに気づきました。

正しいmsvs_versionを使用した後、私のnodejsアプリケーションを実行したときにコンソール警告と同様にnpmインストール警告も消えました。

また、Python 3.0.Xではなく、正しいPython 2.7.Xバージョンがインストールされていることを確認してください。

また、pythonが自分のenvパスにあることを確認する必要があります。

2
Joseph Snow

残念ながら、上記の答えはすべて半分しかありません。これを理解するのに長い時間がかかりました。

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

これは魔法のように動作します!

2
Rama Prashanth

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

1
Victor Perov

Ubuntuのバージョンを16.04にアップグレードした後も同じ問題がありました。私はこのようにして解決した、それが役立つことを願っています。

$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install
1
Enrico Giurin

私はこのスレッドが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を見るためにcatchのパスを変更します。これでエラーは解決しました。

完全を期すためにこれを投稿します。

1
Paul Stoner

npm install bsonnpm updateを試してください

1

私にとって最良の解決策はnode-mongodb 1.xから2.xにアップグレードすることでした。

1
jczaplew

私たちの場合、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環境変数を設定すると解決しました。

これについてのコメントを再び覚醒させて申し訳ありませんが、このスレッドは私達の問題を解決するのに非常に有用であったので、私は将来これをヒットする他の誰かにこれを投稿したいです。

1
Matt M.

私もこの問題を抱えています。

しかし、私は自分のmongodbバージョンを "^ 2.2に変更します。 33 "で、もう問題はありません。

あなたは昔のmongodbパッケージをグローバルまたはローカルにnpm rmと唱えてこのバージョンをインストールします。

方向名を変更しても副作用がないようにしたい場合は、この方法を試してください。

0
S.J. Lin

私はOS Windows 8.1で作業しています、そして私は同じ問題を抱えていました。問題の原因はPythonのバージョンでした。 Originの問題で...\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
hbuenoc

だから、私は同じ問題を抱えているし、それが指定された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
Vasilic Maxim

最初のbson.jsからbrowser_build folderコードをコピーする

2番目の新しいファイルbson.jsを作成してコードを貼り付ける

3番目の近くに新しいファイルを保存しますindex.js

0
rktel

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');
        }
    }
0
user3168528

Npm install mongoose --msvs_version = 2012を試してみました。複数のVisualがインストールされている場合、それは私のために働きました

0
AKID Ahmed

私はこれをmongo-syncバージョン4.1.2で試しました

しかし、彼らはいくつかの変更を加えました、そしてそれはここで提供される解決策で働いていません

私のために働いた解決策

パスnode_modules/mongo-sync/node_modules/bson/ext/index.js

旧コード

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('../build/Release/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');
    }
}

Tryブロックを変更します(catchブロックからbson初期化をコピーします)。

bson = require('../lib/bson/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('../build/Release/bson');  
    }   
} catch(err) {
    // Attempt to load the release bson version
    try {
        bson = require('../lib/bson/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');
    }
}
0
SambitD

まず、npmモジュールmongodbにindex.js ..node_modules\mongodb\node_modules\bson\ext\index.jsというファイルが見つかりました。

catchブロックでjsバージョンへのパスを変更します

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

しかし、それから私はちょうどそれをこのように変更しました、すべて同様です...以前にモジュールをインストールしました...:bson = require( 'bson');

0
Felipe

今日(2017年)には、すごいnpmモジュールがあります: https://github.com/felixrieseberg/windows-build-tools これは通常、ビルドに関する多くの問題を解決しますWindows用のネイティブなものの。

で問題を解決してみてください。

Remove node_modules npm install --global windows-build-tools npm install

0
Alendorff

bson = require('../browser_build/bson');を試しましたが、別のエラーが発生しました

未定義のプロパティ 'BSON_BINARY_SUBTYPE_DEFAULT'を設定できません

最後に私はnpm updateでこの問題を修正しました、これはmongooseのbsonモジュールを修正するでしょう。

0
unclejimbo