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" } ] }
以上。