vscode调试serverless需三者协同:cli、debugger for chrome/edge插件(attach至sls offline进程)和serverless ide插件(校验handler路径);禁用过时的serverless framework extension;调试须同时满足--debug/--inspect、launch.json设为attach模式、handler路径带后缀;部署前须配置aws凭据、验证provider配置、使用serverless deploy命令并加--verbose排查。

VSCode 本身不提供 Serverless Framework 支持,必须靠 CLI、插件和配置文件三者协同;部署失败八成是环境或权限问题,不是代码问题。
装哪些插件才真正起作用
只保留两个核心插件,其他全禁用:
-
Debugger for Chrome(或Debugger for Edge):它不是用来调浏览器的,而是通过 Node.js 的--inspect协议 attach 到sls offline启动的函数进程 -
Serverless IDE:实时校验serverless.yml中functions.hello.handler是否指向真实存在的文件(比如写成src/handlers/hello.js但实际是src/functions/hello.js,它会高亮报错) - 务必禁用
Serverless Framework Extension:这个插件长期未更新,v3 不兼容,还会干扰slsCLI 的 PATH 查找
本地调试必须对齐的三个关键点
缺一不可,否则断点不生效、连不上、报 Cannot find module './handler':
-
sls offline启动命令必须带--debug(旧版)或显式加--inspect(serverless-offline@10+默认禁用) -
.vscode/launch.json必须配成type: "node"+request: "attach",不能选launch;端口填9229(sls offline默认端口) -
serverless.yml中functions.*.handler值必须是可require的路径,且后缀不能省(handler.js可以,handler会找不到)
部署前必须确认的几件事
部署失败往往卡在环境准备环节,而不是 serverless.yml 写得不对:
- AWS 凭据必须已配置:运行
serverless config credentials --provider aws --key XXX --secret YYY,或设环境变量AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY -
serverless.yml中的provider.profile或provider.iamRoleStatements配置错误会导致部署中断,建议先删掉自定义 IAM 策略,用默认角色测试通路 - 如果用
tasks.json做一键部署,确保command是serverless deploy,不要写成sls deploy(某些 shell 下 alias 不生效) - 首次部署建议加
--verbose参数,能看到具体卡在哪一步(比如 S3 bucket 创建失败、CloudFormation rollback 原因)
最常被忽略的是 handler 路径拼写和 --inspect 参数缺失——这两个地方错一个字符,整个调试链就断了,VSCode 不会提示,只会静默失败。











