VSCode环境下如何调试Serverless Framework插件?
VSCode调试Node.js+TypeScript开发的Serverless插件方案
第一步:配置调试启动文件
在项目根目录的.vscode文件夹下新建launch.json,填入以下配置:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "调试Serverless插件", "program": "${workspaceFolder}/node_modules/serverless/bin/serverless.js", "args": ["invoke", "local", "-f", "替换为你的函数名"], "sourceMaps": true, "outFiles": ["${workspaceFolder}/dist/**/*.js"], "skipFiles": ["<node_internals>/**"] } ] }
- 全局安装Serverless CLI的环境,可将
program字段替换为全局安装路径,Mac默认路径为/usr/local/lib/node_modules/serverless/bin/serverless.js,Windows默认路径为%APPDATA%\npm\node_modules\serverless\bin\serverless.js args字段可根据你要调试的场景修改,比如调试本地离线服务可填入["offline"]
第二步:配置TypeScript编译选项
在项目tsconfig.json中开启sourceMap生成,确保断点可以正确映射到TS源码:
{ "compilerOptions": { "sourceMap": true, // 其余原有配置保持不变 "outDir": "./dist" } }
配置完成后执行一次tsc编译,确保生成的JS文件和对应的.map文件都输出到launch.json中outFiles指定的路径下。
第三步:两种挂载进程调试方式
- 直接启动调试:在你需要排查的插件逻辑处打上断点,直接按F5启动调试,VSCode会自动挂载Serverless运行进程,执行到对应逻辑时会自动停在断点位置,可直接查看变量、调用栈等信息
- 附加到已运行进程:如果需要调试长时间运行的场景(比如API网关本地触发请求),先在终端执行
node --inspect node_modules/serverless/bin/serverless offline,再在VSCode调试面板选择「附加到Node.js进程」,选中对应的Serverless进程即可完成挂载调试
常见问题排查
- 断点变灰无法触发:检查
tsconfig.json的sourceMap是否开启,launch.json的outFiles路径是否和编译后的JS文件输出路径匹配 - 调试时进入编译后的JS文件而非TS源码:检查编译后的.map文件是否正常生成,
outFiles配置是否包含对应的.map文件路径 - 执行时报权限错误:如果用的是全局安装的Serverless CLI,确保
program字段填写的全局路径有可执行权限
内容的提问来源于stack exchange,提问作者Renan Silveira
相关产品推荐
相关产品推荐

