Vscode: デバッガーのクラッシュ-「エラー:モジュール '/bcrypt_lib.node'が別のNode.jsバージョンに対してコンパイルされました...」

作成日 2018年12月12日  ·  3コメント  ·  ソース: microsoft/vscode

CPU

| Intel(R)Core(TM)i7-8650U CPU @ 1.90GHz(8 x 816)
-| -

GPUステータス

| 2d_canvas: unavailable_softwarechecker_imaging: disabled_offflash_3d: unavailable_softwareflash_stage3d: unavailable_softwareflash_stage3d_baseline: unavailable_softwaregpu_compositing: unavailable_softwaremultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: unavailable_softwarevideo_decode: unavailable_softwarevideo_encode: unavailable_softwarewebgl: enabled_readbackwebgl2: unavailable_off

負荷(平均)| 1、1、1

メモリ(システム)| 15.42GB(4.06GB無料)

プロセスArgv | --disable-gpu

スクリーンリーダー| 番号

VM | 0%

バージョン:1.29.1
コミット:bc24f98b5f70467bc689abf41cc5550ca637088e
日付:2018-11-15T19:07:43.495Z
電子:2.0.12
Chrome:61.0.3163.100
Node.js:8.9.3
V8:6.1.534.41
アーキテクチャ:x64

再現する手順:

  1. モジュールbcryptを使用するノードサーバーを用意する
  2. 次の設定でデバッガーを使用してみてください。

    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceFolder}/build/index.js",
            "preLaunchTask": "tsc: build - tsconfig.json",
            "outFiles": [
                "${workspaceFolder}/build/**/*.js"
            ]
        }
    ]
}
  1. 次のエラーに注意してください。
module.js:682
  return process.dlopen(module, path._makeLong(filename));
                 ^
Error: The module '/home/calebjay/Documents/work/internal-admin/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 64. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).

私は試みました

  1. rm -rf node_modules後にnpm install
  2. さまざまなバージョンのnvm use (package.jsonには"node": "10.13.0",リストされています)
  3. npm rebuild

アプリがvscodeデバッガーの外部でビルドおよび提供されている場合、エラーは発生しません。エラーはデバッガーに固有のものです。

この問題は、すべての拡張機能が無効になっている場合に発生しますか?:はい

debug

全てのコメント3件

@ komali2
デフォルトのnode.jsバージョンは何ですか?
node --versionをVSCodeの外部およびVSCodeの統合端末の内部で実行します。
どちらの場合も同じバージョンが表示されますか?

「nvm」または「nvs」を使用している場合は、起動構成に"runtimeVersion": "x.y.z"を追加して、VSCodeで特定のバージョンのnode.jsを使用することができます。

なるほど、私はそれを考えていませんでした。

統合されたVSCodeターミナル内のnpm version10.13.0であり、実際のターミナル内には8.1...ものがありました。 だから、vscodeの外で私はしました

nvm use 10.13.0

npm rebuild

次に、vscode内でデバッガーを使用しようとしましたが、それでも次のエラーが発生します。

was compiled against a different Node.js version using
NODE_MODULE_VERSION 64. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing

ターミナルのバージョンに違いがあることがわかったので、これはおそらくVSCODEのバグではありません。 とにかくあなたの助けをありがとう。 私は少し混乱しています... NODE_MODULE_VERSION 64または57に対してマップするノードのバージョンがわかりません。それらがそのように参照されているのを見たことがありません...

nvmを使用する場合は、VS Codeがnvmのノードバージョンを取得することを確認する必要があります(nvmはこれに環境変数を使用せず、代わりにシェル関数を使用するため、これは見た目ほど単純ではありません。https:// stackoverflowを参照してください。 .com / questions / 44700432 / visual-studio-code-to-use-node-version-specified-by-nvm)。

より明示的な(したがって、私の推奨する)アプローチは、起動構成に"runtimeVersion": "8.1.0"を追加することです。


npm rebuildが別のバージョンのノードに対してネイティブモジュールを再構築するのに十分であるかどうかは

このページは役に立ちましたか?
0 / 5 - 0 評価