VS Code中AWS SAM无服务器TypeScript应用调试问题咨询
问题1:TypeScript源码级单步调试实现
完全可以实现,不需要SAM或AWS服务额外支持,仅需配置TypeScript编译参数和VS Code调试规则即可:
- 第一步修改项目根目录的
tsconfig.json,开启source map生成:{ "compilerOptions": { "sourceMap": true, "inlineSources": true, "outDir": "./dist", // 其余原有配置保持不变 } } - 第二步修改VS Code的
.vscode/launch.json中的SAM调试配置,新增source map映射规则:{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "SAM Local Debug TS", // 其余原有调试启动参数保持不变 "sourceMaps": true, "outFiles": ["${workspaceFolder}/dist/**/*.js"], "resolveSourceMapLocations": ["${workspaceFolder}/dist/**", "!**/node_modules/**"] } ] }
配置完成后直接在TypeScript源码文件上打断点即可命中,和客户端TS项目调试体验完全一致。
问题2:本地持续运行监听HTTP请求实现
不需要部署到AWS,直接通过SAM CLI的预热容器参数配合VS Code附加调试即可实现和sam local start-api一致的持续运行效果:
- 第一步执行命令启动带调试模式的持续运行API服务:
参数说明:sam local start-api -d 5858 --warm-containers EAGER-d 5858指定Node调试端口为5858,--warm-containers EAGER配置容器预热,请求处理完成后不会销毁,持续运行监听后续请求。 - 第二步在
.vscode/launch.json中新增附加调试配置:{ "type": "node", "request": "attach", "name": "Attach to SAM Local API", "port": 5858, "address": "localhost", "localRoot": "${workspaceFolder}", "remoteRoot": "/var/task", "sourceMaps": true, "outFiles": ["${workspaceFolder}/dist/**/*.js"] }
配置完成后启动上述SAM命令,再在VS Code中运行附加调试配置,后续所有HTTP请求都会命中你在TS源码中打的断点,修改代码后仅需执行tsc重新编译即可生效,不需要重启SAM进程,也不需要执行sam deploy。
内容的提问来源于stack exchange,提问作者Johnathon Sullinger
相关产品推荐
相关产品推荐

