困っていること
VSCodeでlambda上で動くnodejsモジュールを作成しているのですが、
VSCode上でローカルデバッグする際、自作ライブラリのパスが通りません。
(実際にlambdaにデプロイすると、問題なく実行できます)
設定内容
ディレクトリ構造
ProjectDir |- .vscode | |- launch.json |- FunctionDir |- dist |- index.js ← 実行モジュール |- utillib | |- hoge.js ← 実行モジュールから読み込むモジュール |- otherlib | |- other_hoge.js
実行モジュールの記述
index.js
1require("utillib/hoge") ← ローカルデバッグすると、Runtime.ImportModuleError に
launch.jsonの記述
launch.json
1{ 2 "configurations": [ 3 { 4 "type": "aws-sam", 5 "request": "direct-invoke", 6 "name": "ProjectName:dist/index.handler (nodejs12.x)", 7 "invokeTarget": { 8 "target": "code", 9 "projectRoot": "FunctionDir", 10 "lambdaHandler": "dist/index.handler" 11 }, 12 "lambda": { 13 "runtime": "nodejs12.x", 14 "payload": {}, 15 "environmentVariables": {} 16 } 17 }, 18 ] 19}
試したこと
- requireの記述を、ファイルからのパス指定に変更
→ require("./utillib/hoge")
→ 問題は解決するが、ライブラリから他ライブラリをrequireする際、相対パスを記述したくないので、避けたい。(utlilib/hoge.js から otherlib/hoge.jsを読み込むようなことが有り得る為)
- launch.json で環境変数(NODE_PATH)の設定を試行
→ type:"aws-sam" では、"env" "envFile"とも設定が弾かれ、環境変数を設定できず・・・。
補足情報(FW/ツールのバージョンなど)
- distディレクトリにモジュールを格納しているのは、typescriptでコンパイルを実行している為です。
問題がややこしくなるので、記載を省略しています。
あなたの回答
tips
プレビュー