Cannot debug serverless application in Visual Studio Code

前端 未结 4 1318
梦如初夏
梦如初夏 2021-01-01 21:18

I have tried to debug serverless application developed using serverless framework in VS code. I have followed this article.

But when I trying to debug the code I\'m

相关标签:
4条回答
  • 2021-01-01 21:47

    Update for 2020:

    Do what the other guides state and setup your project with a launch.json file.

    The problem I had was that the supposed file "program": "${workspaceRoot}/node_modules/.bin/sls" threw an error.

    I changed it to "${workspaceRoot}/node_modules/serverless/bin/serverless" and it worked. Here's the full file:

    .vscode/launch.json:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "type": "node",
                "request": "launch",
                "name": "Serverless debug",
                "program": "${workspaceRoot}/node_modules/serverless/bin/serverless",
                "args": [
                    "invoke",
                    "local",
                    "-f",
                    "hello",
                    "--data",
                    "{}"
                ]
            }
        ]
    }
    

    Be aware that the argument hello is the name of the function I want to debug. I think the intended use case must be that you change that file name for whatever function you want to invoke. Maybe someone could create a VSCode plugin to do this?

    0 讨论(0)
  • 2021-01-01 21:57

    To get debugging to work with TypeScript I needed to add outFiles set to the folder where my compiled code goes.

    "outFiles": [
        "${workspaceRoot}/dist/**/*.js"
    ]
    

    I haven't tried to debug straight JS but I would assume it's something like this.

    "outFiles": [
        "${workspaceRoot}/**/*.js"
    ]
    
    0 讨论(0)
  • 2021-01-01 22:04

    I attempted to follow the same article, and experienced the same error. Adding outFiles didn't help, although it did change my error message to:

    Cannot launch program 'd:\<path>\node_modules\.bin\sls' because corresponding JavaScript cannot be found.
    

    I can't explain why VSCode has a problem with the executable in node_modules/.bin, but if I point at node_modules/serverless/bin instead, things work as expected:

    "program": "${workspaceFolder}\\node_modules\\serverless\\bin\\serverless",
    

    Here is my full working configuration, where my test event JSON exists in sample-event.json in the project root:

    {
        "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
                ]
            }
        ]
    }
    

    Using Serverless ^1.26.1, Node 8.9.4 LTS, VSCode 1.20.1

    0 讨论(0)
  • 2021-01-01 22:10

    None of the solutions worked for me so here is my modification as a resource. Also, multiple coworkers were able to attack just by flipping auto-attach to on and using the invoke local keywords.

    Below is a snippet featuring the launch.json that eventually worked for me. /w comments for clarity where my function is named Processor.

    --function or -f The name of the function in your service that you want to invoke locally.

    --path or -p The path to a json file holding input data to be passed to the invoked function as the event. This path is relative to the root directory of the service.

    --stage or -s The stage in your service you want to invoke your function in.

    • "serverless": "^1.30.3"
    • "serverless-plugin-typescript": "^1.1.5",
    • node: 8.10.0
    • 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
            }
        ]
      }
      
    0 讨论(0)
提交回复
热议问题