根据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版本
我尝试添加"协议":" Legacy" to launch.json config。我也尝试使用--debug-port而不是-d。 我在Windows 10上。不确定问题是否是特定于Windows的。
答案 0 :(得分:3)
当通过终端或visual studio代码终端运行本地sam时,设置断点并在调试下拉列表中选择launch.json
的名称,如文档中所示。
https://github.com/awslabs/aws-sam-local#debugging-applications
之后,启动sam local start-api。然后,当您点击API上的端点时,您应该看到终端状态如下:
2018/01/12 07:17:29调用index.handler(nodejs6.10)
2018/01/12 07:17:29 Mounting / Users / 24g / 1725_ecpo_lambda as / var / task:ro在运行时容器内调试器监听[::]:8000
一旦看到调试器正在侦听。单击调试器上的播放按钮。我注意到,除非我相信有例外,否则这通常不会自行恢复。
我正在使用Visual Studio代码的1.19.1版本。
您是否尝试过使用其他端口?这是我目前的配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to SAM Local",
"type": "node",
"request": "attach",
"address": "localhost",
"port": 8000,
"localRoot": "${workspaceRoot}",
"remoteRoot": "/var/task"
}
]
}
答案 1 :(得分:1)
要修复此问题并调试节点SAM本地Lambda函数,我必须阅读Node.js调试文档(https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_supported-nodelike-runtimes)。
具体来说,解决这个问题的部分与我的一方有关,而且#34; Legacy" vs" Inspector"调试协议。对于Node> 8.0 Legacy 需要使用调试协议。
由于Lambda Runtime依赖节点6.10 " Legacy"我必须使用协议。
起初我并不认为这可能是问题,因为SAM本地节点VS代码配置实际上不正确(至少对我而言)引用了" Inspector"协议在他们的文档中,同时正确引用" Legacy" GIF中的协议(见下文)在那些相同的文档中。
对于那些想要尝试的人来说,这就是我的 WORKING launch.json需要的样子。
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to SAM Local",
"type": "node",
"request": "attach",
"address": "127.0.0.1",
"port": 8000,
"localRoot": "${workspaceRoot}/dist",
"remoteRoot": "/var/task",
"protocol": "legacy"
}
]
}
最重要的部分是: " protocol":" legacy"
我假设您可以将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不起作用但在文档中引用(不要使用这个) :
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to SAM Local",
"type": "node",
"request": "attach",
"address": "localhost",
"port": 5858,
"localRoot": "${workspaceRoot}",
"remoteRoot": "/var/task",
"protocol": "inspector"
}
]
}