"Cannot find module './build/Release/DTraceProviderBindings'"
をスローする単純なnodejsアプリケーションがあります。オンラインで調べたところ、Windowsでrestifyを使用しているときに多くの人が同じ問題を抱えているようです(私の場合、Windows 10でrestifyを使用しています)。どうやら、 dtrace-providerはrestifyのオプションモジュールです そしてWindows用のバージョンはありません。だから、私がこれまでに試したこと:
npm install --no-optional
を実行します。npm install restify --no-optional
を実行します。dtrace-provider
。Githubの問題で見つかった場所で試したすべてのことで、他のモジュールを使用しているOSXユーザーでも同じエラーが発生しました。他に何を試すべきかわからない。
注:この例外はアプリケーションを停止せず、コンソールにエラーを出力しません。これがデバッガーを使用して発生していることに気付きました。つまり、アプリケーションは正常に実行されますが、これはバックグラウンドで発生し続けます。
私が使用している他のモジュールのリスト:
"dependencies": {
"restify": "latest",
"request": ">=2.11.1",
"cheerio": ">=0.10.0",
"xml2js": ">=0.2.0",
"botbuilder": "^0.11.1",
"applicationinsights": "latest"
}
これは、Node 6.1に切り替えた後(およびノードモジュールの再インストールが機能しなかった場合)に機能しました):
Dtrace-providerをインストールして保存します
$ npm install dtrace-provider --save
'node_modules'フォルダーを削除します
ノードモジュールを再インストールします
$ npm install
このスレッドは、Githubプロジェクトのrestify( https://github.com/restify/node-restify/issues/109 )に関する別の解決策と組み合わせて、可能な限り単純化する前に見つけました。
最近、ノード6.11.1
でもこのエラーが発生しました。 npm rebuild dtrace-provider
を実行したところ、問題は解決しました。
Restifyチームは、try/catchブロックでモジュールを要求することにより、モジュールをロードしようとするアプローチに従いました。例外は無視してください。
@Derekが述べたように、最近ノードv8.8.1でもこのエラーが発生し、npm rebuild dtrace-provider
を実行すると、問題が解決しました。
私はこれが古い問題であることを知っていますが、他の誰かが私と同じ問題を抱えている場合に備えてコメントしたいと思いました。
私の問題は、パスに括弧が含まれていることが原因でした。 /users/karlgroves/Dropbox (Personal)/foo/bar/bat/project...
両親のいない道にプロジェクトを移すことは私のために働いた。 node_modules
を消去して、再インストールする必要があります。
tl; dr; dtrace-providerはnode-gypを利用しました。これにはpython version> = 2.5 and NOT 3.5
OSXでこの問題が発生し、環境変数V=/Users/your_user/your_project npm i dtrace-provider
の使用を示す投稿を見つけました
これにより、ビルドに失敗したnode-gyp
への依存関係があったことがわかりました...このモジュールに問題があることがわかったら、node-gyp
のトラブルシューティングに注意を向けることができました。
これにより、my python version 3.5
was nsupported and it required version >= 2.5
。
python 2.7.x
に行き、そこにあることを確認するために/usr/bin/python 2.7.x
をチェックしました。最終的にこのモジュールを必要としていたノードモジュールをアンインストールし、次にnpm cache clean
を使用しましたモジュールを再インストールしたところ、今回はビルドできる正しいpythonバージョンを取得したようです。
これが誰かに役立つことを願っています=)
私は次の(手の込んだ)シーケンスで成功しました:
rm -rf node_modules
rm -rf ~/Library/Caches/node-gyp/
V=1 npm install -S [email protected] --python=python2.7
(インストールが完全に成功するまで、この手順を繰り返して解決します…失敗した場合は、バージョンを確認します-ある時点で不正な[email protected]ビルドがありました)npm install
DTraceProviderBindings
エラーが発生しました。原因は、間違ったバージョンのdtrace-provider(特にbunyan)とのネストされた依存関係でした。npm list | grep dtrace -B6
を実行します。0.8.8
よりも低い値がある場合は、 ネストされたNPM依存関係バージョンをオーバーライドするにはどうすればよいですか? の方法に従って、package-lock.json
を編集します。 dtrace-provider
のrequires
をdependencies
に置き換え、バージョンを更新します。rm -rf node_modules
npm install --python=python2.7
npm list
を数回繰り返す必要がありました。すべてを捕まえたと思っていたのに、捕まえなかったからです。
重要な点は、必要なバージョンのpythonを使用し、UNIXに適したパスを用意し、ネストされたすべての依存関係を追跡することでした。 pythonバージョンの問題は大きな厄介なエラーを引き起こし、スペースの問題ははるかに見逃しやすいエラーを引き起こしました。
私は多くの提案を試みましたが、同じエラーが再び発生します。
最後に、この質問を解決する正しい方法を見つけました。
node.js Webサイト にアクセスし、node.js pkgの最新バージョンをダウンロードします。
インストール後、ソフトウェアを再インストールすると、すべて問題ありません。
このコマンドを実行することで、これを機能させることができました
npm install --python=python2.7