VSCode中AWS SAM两种调试配置异常问题求助
VSCode中AWS SAM调试/event端点的问题解决
问题1:直接调用配置找不到package.json
明明template.yaml和package.json在同一目录却报错,试试这些办法:
- 确认VSCode当前打开的工作区是EventsApi根目录,而非上级目录。工作区路径错误会导致SAM从不对的位置查找依赖文件。
- 在launch.json的直接调用配置里,显式指定
cwd字段为项目根目录,强制SAM读取正确路径的文件。示例配置:
{ "type": "aws-sam", "request": "direct-invoke", "name": "Direct Invoke Event API", "invokeTarget": { "target": "template", "templatePath": "${workspaceFolder}/template.yaml", "logicalId": "AddEventFunction" }, "cwd": "${workspaceFolder}", "lambda": { "runtime": "nodejs18.x" // 替换为你实际使用的Node版本 } }
- 核对template.yaml的Function配置:
CodeUri要指向包含package.json的目录(比如.),Handler要和代码里的实际导出函数一致(比如handler.addEvent)。
问题2:附加调试无法命中断点、无法添加stopOnEntry
针对断点不命中和参数添加问题,按以下步骤处理:
断点不命中的解决办法
- 确保本地调试用的是未打包的源码,不要用部署后的压缩包,SAM本地运行时要直接指向你的源码目录。
- 在launch.json的附加配置里,正确映射
localRoot和remoteRoot。比如本地源码在${workspaceFolder}/src,Lambda容器内的代码路径是/var/task,配置要写成:
{ "type": "aws-sam", "request": "attach", "name": "Attach to AddEventFunction", "target": "AddEventFunction", "port": 5858, "localRoot": "${workspaceFolder}/src", "remoteRoot": "/var/task", "stopOnEntry": true }
- 启动SAM本地调试时必须带调试端口参数:
sam local invoke AddEventFunction --debug-port 5858,等容器启动后再触发VSCode的附加调试。 - 检查断点位置:不要打在空行、注释或永远不会执行的代码分支上,确保断点在实际运行的逻辑里。
无法添加stopOnEntry的解决办法
- 更新VSCode的AWS SAM扩展到最新版本,旧版本可能不支持这个参数。
- 确认配置的
type字段是aws-sam,如果是普通的node调试类型,可能不兼容SAM的附加参数。
内容的提问来源于stack exchange,提问作者atAtlas
相关产品推荐
相关产品推荐

