无法在Visual Studio代码中调试无服务器应用程序

时间:2018-08-21 08:32:26

标签: node.js visual-studio-code serverless-framework

我试图找出如何使用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中调试无服务器应用程序?

1 个答案:

答案 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",
        ]
    },