Node を Visual Studio Code でデバッグするときにグローバルにインストールしたモジュールが読み込まれない
electron をグローバルでインストールした(ローカルの場合は問題ない)
$ npm -g i electron
electron を起動すると動くのだが、
$ electron .

Visual Studio Code のデバッグ(Node.js)で実行すると、モジュールが見つからないとなる。
Uncaught Error: Cannot find module ‘electron’
おそらくグローバルのモジュールが見つけられていない。グローバルにインストールした場合のパスを確認。
Macで、nodebrew を使っているので、以下にインストールされている
npm root -g /Users/hirotoyagi/.nodebrew/node/v16.0.0/lib/node_modules
Nodeがグローバルモジュールを探しにいくパスを確認。
上記パスは含まれていない。
$ node -e “console.log(global.module.paths)” [ ‘/Users/hirotoyagi/node_modules’, ‘/Users/node_modules’, ‘/node_modules’ ]
上記以外にも、NODE_PATHで指定されたパスを探しにいくようなので、Visual Sutudio Code の launc.json の環境変数に指定する(env.NODE_PATHエントリ)
"configurations": [
{
:
"env": {
"NODE_PATH":"/Users/hirotoyagi/.nodebrew/node/v16.0.0/lib/node_modules",
}
}
]
Electronをデバッグする場合、実行可能ファイル(electron)が~.nodebrew/current/bin/electron に置かれるので、runtimeExecutableに指定する
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Main Process",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
// "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
"runtimeExecutable": "/Users/hirotoyagi/.nodebrew/current/bin/electron",
"args" : ["."],
"outputCapture": "std"
}
]
}
以上。

