VSコードでサーバーレスフレームワークを使用して開発されたサーバーレスアプリケーションをデバッグしようとしました。私は this の記事に従いました。
しかし、コードをデバッグしようとすると、次のようにVSコードからエラーが発生します。
プログラム 'g:\ Projects\Serverless1\node_modules.bin\sls'を起動できません。 'outDirまたはoutFiles'属性を設定すると役立つ場合があります。
slsコマンドファイルはフォルダーに既に存在し、launch.jsonファイルの設定は次のとおりです
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"protocol": "inspector",
"name": "run hello function",
"program": "${workspaceRoot}\\node_modules\\.bin\\sls",
"args": [
"invoke",
"local",
"-f",
"hello",
"--data",
"{}"
]
}
]
この問題の修正を手伝ってください。
同じ記事 をフォローしようとすると、同じエラーが発生しました。 outFiles
を追加しても効果はありませんでしたが、didエラーメッセージが次のように変わります。
Cannot launch program 'd:\<path>\node_modules\.bin\sls' because corresponding JavaScript cannot be found.
VSCodeがnode_modules/.bin
の実行可能ファイルに問題がある理由を説明することはできませんが、代わりにnode_modules/serverless/bin
をポイントすると、期待どおりに機能します。
"program": "${workspaceFolder}\\node_modules\\serverless\\bin\\serverless",
これが私の完全に機能する構成です。ここでは、テストイベントJSONがプロジェクトルートのsample-event.json
に存在します。
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Lambda",
"program": "${workspaceFolder}/node_modules/serverless/bin/serverless",
"args": [
"invoke",
"local",
"-f",
"<function-name>",
"--data",
"{}" // You can use this argument to pass data to the function to help with the debug
]
}
]
}
サーバーレス^ 1.26.1を使用、Node 8.9.4 LTS、VSCode 1.20.1
TypeScriptで動作するようにデバッグするには、コンパイル済みコードが格納されるフォルダーにoutFiles
セットを追加する必要がありました。
"outFiles": [
"${workspaceRoot}/dist/**/*.js"
]
私はまっすぐなJSをデバッグしようとしませんでしたが、これはこのようなものだと思います。
"outFiles": [
"${workspaceRoot}/**/*.js"
]
解決策はどれも私にとってはうまくいかなかったので、これがリソースとしての私の変更です。また、自動接続をオンに切り替え、invoke localキーワードを使用するだけで、複数の同僚が攻撃することができました。
以下は、最終的に私のために働いたlaunch.jsonをフィーチャーしたスニペットです。/wは、私の関数の名前がProcessorであることを明確にするためにコメントしています。
--functionまたは-fローカルで呼び出すサービス内の関数の名前。
--pathまたは-pイベントとして呼び出された関数に渡される入力データを保持するjsonファイルへのパス。このパスは、サービスのルートディレクトリからの相対パスです。
--stageまたは-s関数を呼び出すサービス内のステージ。
npm:5.6.0
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Lambda",
"program": "${workspaceFolder}/node_modules/.bin/sls",
"args": [
"invoke",
"local",
"-f",
"Processor",
"-p",
"./events/S3toLambda.json",
"-s",
"local"
],
"autoAttachChildProcesses": true
}
]
}