根据AWS文档,我正在以这样的方式启动SAM本地:
$ sam local start-api -d 5858
我在launch.json中有以下内容
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to SAM Local",
"type": "node",
"request": "attach",
"address": "localhost",
"port": 5858,
"localRoot": "${workspaceRoot}",
"remoteRoot": "/var/task"
}
]
}
但是,当我启动visual studio调试器时,它说“无法连接到运行时确保运行时处于'传统'调试模式”
看起来很多人都有Node.js 6和Visual Studio Code这个问题,但我似乎无法找到答案...我正在使用Visual Studio Code 1.18.1版本
我尝试将“protocol”:“Legacy”添加到launch.json配置中 . 我也尝试使用--debug-port而不是-d . 我在Windows 10上 . 不确定问题是否是特定于Windows的 .
2 Answers
当通过终端或visual studio代码终端运行本地sam时,设置断点并在调试下拉列表中选择
launch.json
的名称,如文档中所示 .https://github.com/awslabs/aws-sam-local#debugging-applications
之后,启动sam本地start-api . 然后,当您在API上点击 endpoints 时,您应该看到终端状态如下:
一旦看到调试器正在侦听 . 单击调试器上的播放按钮 . 我注意到这通常不会自行恢复,除非我相信有例外 .
我正在使用Visual Studio代码的1.19.1版本 .
您尝试过使用其他端口吗?这是我目前的配置:
要修复此问题并调试节点SAM本地Lambda函数,我必须阅读Node.js调试文档(https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_supported-nodelike-runtimes) .
具体来说,解决这个问题的部分与"Legacy" vs "Inspector"调试协议有关 . 对于Node> 8.0 Legacy 需要使用调试协议 .
起初我不认为这可能是问题,因为SAM本地节点VS代码配置实际上不正确(至少对我来说)在他们的文档中引用“Inspector”协议,同时正确地引用了“Legacy”协议这些文档中的Gif(见下文) .
我假设您可以将127.0.0.1交换回localhost,然后移回5858(而不是8000),因为这些都是我尝试找到解决方案的各种尝试的碎片,但我还没有尝试过 .
我会在得到一分钟后立即向github上的AWS SAM本地README.md提交拉取请求(在此处找到:https://github.com/awslabs/aws-sam-local#debugging-applications) . 希望这可以帮助其他人过渡!
将上述内容与截至发布时的文档进行比较,仍将以下JSON列为VS Code launch.json文件的正确设置:
INCORRECT JSON that does not work but is referenced in the docs (DO NOT USE THIS ONE) :