web-dev-qa-db-ja.com

モジュールdtrace-providerが見つかりません

"Cannot find module './build/Release/DTraceProviderBindings'"をスローする単純なnodejsアプリケーションがあります。オンラインで調べたところ、Windowsでrestifyを使用しているときに多くの人が同じ問題を抱えているようです(私の場合、Windows 10でrestifyを使用しています)。どうやら、 dtrace-providerはrestifyのオプションモジュールです そしてWindows用のバージョンはありません。だから、私がこれまでに試したこと:

  1. ノードをv6.2.0に更新します。
  2. すべてのモジュールをアンインストールして、npm install --no-optionalを実行します。
  3. 再インストールのみをアンインストールしてnpm install restify --no-optionalを実行します。
  4. そして、私の最も必死の移動npm install 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"
  }
10
Ernani

これは、Node 6.1に切り替えた後(およびノー​​ドモジュールの再インストールが機能しなかった場合)に機能しました):

  1. Dtrace-providerをインストールして保存します

    $ npm install dtrace-provider --save
    
  2. 'node_modules'フォルダーを削除します

  3. ノードモジュールを再インストールします

    $ npm install
    

このスレッドは、Githubプロジェクトのrestify( https://github.com/restify/node-restify/issues/109 )に関する別の解決策と組み合わせて、可能な限り単純化する前に見つけました。

11
Steve Hynding

最近、ノード6.11.1でもこのエラーが発生しました。 npm rebuild dtrace-providerを実行したところ、問題は解決しました。

6
Derek

Restifyチームは、try/catchブロックでモジュールを要求することにより、モジュールをロードしようとするアプローチに従いました。例外は無視してください。

2
Bruno Brant

@Derekが述べたように、最近ノードv8.8.1でもこのエラーが発生し、npm rebuild dtrace-providerを実行すると、問題が解決しました。

1
Shlomi Lachmish

私はこれが古い問題であることを知っていますが、他の誰かが私と同じ問題を抱えている場合に備えてコメントしたいと思いました。

私の問題は、パスに括弧が含まれていることが原因でした。 /users/karlgroves/Dropbox (Personal)/foo/bar/bat/project...

両親のいない道にプロジェクトを移すことは私のために働いた。 node_modulesを消去して、再インストールする必要があります。

1
Karl Groves

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バージョンを取得したようです。

これが誰かに役立つことを願っています=)

1
afreeland

私は次の(手の込んだ)シーケンスで成功しました:

  1. スペースがないようにパスを調整します
  2. rm -rf node_modules
  3. rm -rf ~/Library/Caches/node-gyp/
  4. npm cache clean --force
  5. V=1 npm install -S [email protected] --python=python2.7(インストールが完全に成功するまで、この手順を繰り返して解決します…失敗した場合は、バージョンを確認します-ある時点で不正な[email protected]ビルドがありました)
  6. npm install
  7. この時点で、すべてがきれいにインストールされているはずであり、私はよくやった仕事に自分自身を祝福していました。次に、コードを実行しましたが、stillDTraceProviderBindingsエラーが発生しました。原因は、間違ったバージョンのdtrace-provider(特にbunyan)とのネストされた依存関係でした。
  8. 確認するには、npm list | grep dtrace -B6を実行します。
  9. 0.8.8よりも低い値がある場合は、 ネストされたNPM依存関係バージョンをオーバーライドするにはどうすればよいですか? の方法に従って、package-lock.jsonを編集します。 dtrace-providerrequiresdependenciesに置き換え、バージョンを更新します。
  10. すべてをきれいにするために戻ってください:rm -rf node_modules
  11. 次に、もう一度、npm install --python=python2.7

npm listを数回繰り返す必要がありました。すべてを捕まえたと思っていたのに、捕まえなかったからです。

重要な点は、必要なバージョンのpythonを使用し、UNIXに適したパスを用意し、ネストされたすべての依存関係を追跡することでした。 pythonバージョンの問題は大きな厄介なエラーを引き起こし、スペースの問題ははるかに見逃しやすいエラーを引き起こしました。

0
Holly Cummins

私は多くの提案を試みましたが、同じエラーが再び発生します。
最後に、この質問を解決する正しい方法を見つけました。
node.js Webサイト にアクセスし、node.js pkgの最新バージョンをダウンロードします。
インストール後、ソフトウェアを再インストールすると、すべて問題ありません。

0
mistdon

このコマンドを実行することで、これを機能させることができました

npm install --python=python2.7
0
gmansour