以下のエラーが出ます。
{ [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
この記事を掲載する前に、これらのことを試してみました。
\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'))\")"]
に変更しました。
このコマンドを実行しましたnpm install -g node-gyp
package.json
の中でmongooseのバージョンを3.8.21に更新しました。
何も動作しません。提案してください
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
私は今日(2016年2月19日)この問題を抱えていて、Mongooseの最新版をインストールすることによってそれを解決しました。これをあなたのpackage.jsonに入れてみてください。
"mongoose": "~4.4"
それが役立つことを願っています。私のためにそれを解決しました!
問題は、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
今回は赤い線ではなくいくつかの黄色い線が表示されますが、エラーは消えます。
私はmogooseバージョン3.8.23
をインストールすることによってこの問題を解決しました
npm install [email protected]
これは私のために働きました。ワークスペース内でテキストを検索します。
"../build/Release/bson"
あなたはおそらくそれをmongoseとmonkモジュールの中に見つけるでしょう。
その後、それぞれ交換してください。
bson = require('../build/Release/bson');
と:
bson = require('bson');
それで全部です!
最新バージョンの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/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インストールをやり直すことで、問題は解決しました。
npm install [email protected]
を試して、またbson = require('../build/Release/bson');
をに置き換えてください
node_modules/bson/ext/index.js内のbson = require('../browser_build/bson');
これは私のために働いた:
プロジェクト内のファイルに移動します。
node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js
そして変更:
bson = require('../build/Release/bson');
に:
bson = require('bson');
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
マークされた答えは全く間違っています。コンソールログステートメントを隠し、実際の問題に対処しても何もしません。あなたはまたあなたの目を閉じることができ、それは同じ結果を達成するでしょう。
この問題は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
を単独で実行してバージョンを確認できます。
新しいwww.spotdekho.com
マシンでwindows10
のセットアップを作成中に、同じエラーが原因でコマンド"nodemon web.js"
を実行できませんでした
"エラー:モジュール '../build/Release/bson'が見つかりません"
以下の手順で修正しました。
- "node_modules\bson\build \"の中に "Release"というフォルダを作成します。
- "node_modules\bson\browser_build \"からbson.jsをコピーします。
- "node_modules\bson\build\Release"フォルダ内にbson.jsを貼り付けます。
これで問題は解決します。
シモンズ:私はマングースのバージョン4.8.8を使用しています。
ありがとう:)、それが誰かに役立つことを願っています。
私の場合、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...
エラーを無視します(または、問題が発生しないようにコードを変更します)。このようなエラーが発生したときは、ノードv0.10からノードv4.x.xにアップグレードしていました。私がしなければならなかったのはgccの新しいバージョンをインストールすることでした(私はgcc v4.4.xか何かを持っていたと思います)。私はgcc 4.7.2にアップデートしましたが、その後はうまくいきました。
このコマンドを実行してmongoose npm uninstall --save mongoose
をアンインストールします - その後、それを再インストールしますが、今度はnpm
が自動的に最新バージョンのmongoose run npm install --save mongoose
をインストールしますこれは私にとってはうまくいきました。
Windows 7(x64)で私を助けてくれる唯一のもの: https://stackoverflow.com/a/29714359/2670121
X32バージョンでnodeとpythonを再インストールしてください。
私はこのエラーに多くの時間を費やし(c ++ bson拡張モジュールのロードに失敗しました)、そして最後にモジュールnode-gyp
(ネイティブアドオンのビルド用)をインストールしました。モジュールとしてbson.node。再インストール後、問題は解決しました。
繰り返しますが、このエラーはどういう意味ですか?
実際には、それは間違いではありません。あなたはまだマングースを使用することができます。しかし、この場合、bsonモジュールの高速ネイティブ実現の代わりに、js実現が遅くなります。 「node_modulesの内側のパスを編集...」のような多くのヒントを見ました - 問題を解決するのではなく、単にエラーメッセージを表示しないため、これはまったく役に立ちません。
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パスにあることを確認する必要があります。
残念ながら、上記の答えはすべて半分しかありません。これを理解するのに長い時間がかかりました。
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
これは魔法のように動作します!
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
Ubuntuのバージョンを16.04にアップグレードした後も同じ問題がありました。私はこのようにして解決した、それが役立つことを願っています。
$rm -rf node_modules
$npm --save install bson
$npm --save install mongoose
$npm install
私はこのスレッドが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のパスを変更します。これでエラーは解決しました。
完全を期すためにこれを投稿します。
npm install bson
とnpm update
を試してください
私にとって最良の解決策はnode-mongodb 1.xから2.xにアップグレードすることでした。
私たちの場合、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環境変数を設定すると解決しました。
これについてのコメントを再び覚醒させて申し訳ありませんが、このスレッドは私達の問題を解決するのに非常に有用であったので、私は将来これをヒットする他の誰かにこれを投稿したいです。
私もこの問題を抱えています。
しかし、私は自分のmongodbバージョンを "^ 2.2に変更します。 33 "で、もう問題はありません。
あなたは昔のmongodbパッケージをグローバルまたはローカルにnpm rm
と唱えてこのバージョンをインストールします。
方向名を変更しても副作用がないようにしたい場合は、この方法を試してください。
私は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未満でなければなりません。
だから、私は同じ問題を抱えているし、それが指定された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データベースへの実際のパスに変更してください。
私の投稿が誰かに役立つことを嬉しく思います...
最初のbson.js
からbrowser_build folder
コードをコピーする
2番目の新しいファイルbson.js
を作成してコードを貼り付ける
3番目の近くに新しいファイルを保存しますindex.js
。
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');
}
}
Npm install mongoose --msvs_version = 2012を試してみました。複数のVisualがインストールされている場合、それは私のために働きました
私はこれを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');
}
}
まず、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');
今日(2017年)には、すごいnpmモジュールがあります: https://github.com/felixrieseberg/windows-build-tools これは通常、ビルドに関する多くの問題を解決しますWindows用のネイティブなものの。
で問題を解決してみてください。
Remove node_modules npm install --global windows-build-tools npm install
bson = require('../browser_build/bson');
を試しましたが、別のエラーが発生しました
未定義のプロパティ 'BSON_BINARY_SUBTYPE_DEFAULT'を設定できません
最後に私はnpm update
でこの問題を修正しました、これはmongooseのbsonモジュールを修正するでしょう。