我试图找出如何使用Visual Studio Code调试器调试无服务器lambda函数的方法。出于测试目的,我有一个非常简单的test
lambda函数:
module.exports.handler = async (event) => {
debugger;
console.log(111, event);
};
然后,在launch.json
中,我创建了这样的配置:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch via NPM",
"runtimeVersion": "8.4.0",
"runtimeExecutable": "node",
"program": "${workspaceFolder}/node_modules/.bin/sls",
"cwd": "${workspaceRoot}",
"args": [
"invoke",
"local",
"--function",
"test",
"--data",
"{foo:'bar'}"
],
"port": 9229
}
]
}
现在,我在Lambda函数中放置一个断点,然后按F5键启动调试器。我希望然后输入代码,放一些手表,逐步介绍我的代码。但是什么也没发生。没有错误。没有控制台输出,没有代码在断点处暂停。没有。我所得到的只是debug console
中的消息:/home/set/.nvm/versions/node/v8.4.0/bin/node node_modules/.bin/sls invoke local --function test --data {foo:'bar'}
如果我走了,然后在终端中运行那条线,我得到的正是预期的结果
set@set-home ~/www/blahblah/ens $ /home/set/.nvm/versions/node/v8.4.0/bin/node node_modules/.bin/sls invoke local --function test --data {foo:'bar'}
Serverless: INVOKING INVOKE
111 '{foo:bar}'
我在做什么错?如何在Visual Studio Code中调试无服务器应用程序?
答案 0 :(得分:3)
我怀疑您只需要摆脱"port": 9229
位即可。
我从未在本地指定用于调试 Serverless 功能的端口,但是将其添加到我的任何工作配置中都会产生您所观察到的症状。
顺便说一句,您也许也可以取出其他一些东西。作为参考,我的 Serverless 调试配置通常看起来像这样在本地调用:
{
"type": "node",
"request": "launch",
"name": "Debug sls local",
"program": "${workspaceFolder}/node_modules/serverless/bin/serverless",
"args": [
"invoke", "local", "--function", "processFirehose", "--path", "sample-event.json",
"--stage",
"nonprod",
]
},