モジュール '../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

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

  • 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. 内部でマングースのバージョンを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()はコールバック関数を必要としますが、Route。<anonymous>で[オブジェクト未定義]を取得しました
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 2015年

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

25
これは解決策ではありません。同じ結果で、エラーを出力する文字列を削除できます。このエラーは、bsonのネイティブc ++プラグインが見つからないために表示され、この場合は、jsの実現が使用されます。
アレンドルフ2015年

4
@Alendorff確かに、それは私たちのほとんどが探しているものです。C ++プラグインは気にしません。ノードインスペクターが機能しないため、警告を取り除きます。この観点からは、提案(エラープリントの削除)も解決策です。これはエラーではないため、コードはJSフォールバックで正常に動作します。
totymedli 2016年

3
申し訳ありませんが、ここでの2番目に良い回答としての反対投票には、実際にはハック以外の正しい解決策があります。壊れていないバージョンのパッケージをインストールしてください!
jrista 2017

70

今日(2016年2月19日)にこの問題が発生し、Mongooseの最新バージョンをインストールするだけで解決しました。これをpackage.jsonに入れてみてください:

"mongoose": "~4.4"

お役に立てば幸いです。私のためにそれを解決しました!


1
私のために働いた。私は古いチュートリアルに従っていた、古いマングースバージョンのすべての問題を考えています。IMOこれは正解です。
エドワードニューウェル2016年

8
ベストアンサー、モジュール内のコードの編集に関する他のすべての問題は解決策ではなくハックです
自転車

2
node_modules / mongodbなどをいじる必要のない最も簡単な解決策。ありがとう!
mikeym 2017

1
最高の1つは、mongooseをアンインストールして(npm uninstall mongoose)、再インストールするだけです(npm install mongoose)
Grijan

18

問題は、ngoを介してmongooseをインストールするときに、WindowsにPythonがインストールされていると想定し、必要なライブラリを構築しようとすることです。あなたはpythonを持っていないので、警告付きでビルドフェーズをスキップします。しかし、アプリケーションを起動すると、必要なモジュールが存在しないため、このエラーが発生します。

物事を行うためには権利最初からあなたのコンピュータ上でのpython(バージョン2.7)をインストール:https://www.python.org/downloads/またはuはchockolateyちょうどタイプをインストールした場合choco install python2

次に、Python変数が設定されていることを確認します。コマンドプロンプトで次のように設定できます。

SET python=D:\Python27\python.exe

(もちろん、Pythonの場所に応じてパスを変更する必要があります)次に、node-gypをインストールします。

npm install -g node-gyp

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

npm install mongoose

今回は赤い線ではなく黄色の線が表示されますが、エラーは発生しません。


2
Pythonのバージョンは重要です。node-gypがバージョン> 3.0で機能しない
MatthieuLemoine

1
これは完全な解決策ではありません...まだ次のエラーが発生します:MSBUILD:エラーMSB3428:Visual C ++コンポーネント "VCBuild.exe"を読み込めませんでした。
orszaczky

@TheRebel vs2010ツールチェーンを想定しています。インストールしたものに応じて、--msvs-version=2012または追加し2013eます。例npm install mongoose --msvs-version=2012
RichieRich

herokuクラウドにノードアプリを展開している場合の対処方法
jsbisht 2016年

15

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

npm install mongoose@3.8.23

ここで働いた。これは古いバージョンですか?なぜ機能したのですか?
Victor Ferreira 2015年

15

これでうまくいきました。ワークスペースでテキストを検索します。

"../build/Release/bson"

おそらく、mongoseおよびmonkモジュール内にあります。

次に、それぞれを交換します。

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

と:

bson = require('bson');

それで全部です!


meanjsを使用してプロジェクトを設定した後、デフォルトのテストを実行しようとすると、このエラーが発生しました。これはそれを修正しました。ありがとう。
RaneWrites 2017

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'); 働いた。また、インストールに進む前にバージョンmongooseを確認してください。
Vikram Shetty 2015

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、2015

7

短い答え

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 +行のファイル。これも「非ネイティブ」実装のようです。したがって、文句を吐くことはありませんが、「純粋なJSバージョンを使用」しているため、パフォーマンスが低下します。

https://github.com/mongodb/js-bson/issues/145およびhttps://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 installをやり直すことで、最終的に問題が解決します。


6

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

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を含むアプリ内のノードモジュール(要件によってインストールされたモジュールも含む)を完全にアンインストールして再インストールする必要があります。これでエラーが処理されます。「Release / 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.com新しいwindows10マシンでのセットアップを作成しているときに、"nodemon web.js" 同じエラーによりコマンドを実行できませんでした

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

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

  1. 「node_modules \ bson \ build \」の場所に「Release」フォルダを作成します
  2. 「node_modules \ bson \ browser_build \」からbson.jsをコピーします
  3. bson.jsを「node_modules \ bson \ build \ Release」フォルダに貼り付けます。

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

PS:私はmongooseバージョン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を介した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

Windows 8.1を使用している場合は、正しいVisual Studioコンパイラーを使用してnpmモジュールをインストールしていることを確認する必要があります。

Visual Studio 2012をインストールしましたが、このコマンドでうまくいきます。(node_modules dirを削除した後)

npm install --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バージョンがインストールされていることを確認することもできます。

また、pythonが環境パスにあることを確認する必要もあります。


これは、使用してVisual Studioのコミュニティ版2013でWindows 8.1上で私のために働いたnpm install --msvs_version=2012
phocks

2

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

x32バージョンでノードとpythonを再インストールします。
私は多くの時間をこのエラー(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、2015年

1
ああ、本当に、私の悪い。私はそのタグを見ませんでした
ビクター・ペロフ

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を検索するように、catchのパスを変更します。これでエラーが解決しました。

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


1

ubuntuのバージョンを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し、コードを貼り付け

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


0

OS Windows 8.1を使用していますが、同じ問題が発生しました。問題の原因はPythonのバージョンでした。起点の問題が見つかりました。ファイル... \ 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修正しました。これにより、mongooseの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.