VSCode调试多模块Maven项目需同时配置projectName、mainClass和args:projectName必须填子模块名(如"auth-service"),mainClass写全限定名(如"com.example.auth.AuthApplication"),args作为字符串数组传参(如["--spring.profiles.active=dev", "--server.port=8081"]),三者缺一不可。

直接在 launch.json 里配 args 字段就能传启动参数,但必须和 program(或 mainClass)类型匹配,否则参数根本不会被 JVM/Python/Node.js 解析。
Java 多模块项目传参:args 要配合 projectName 和 mainClass 一起用
多模块 Maven 项目里,光写 args 没用——调试器得先定位到正确的模块和主类,才能把参数传进去。常见错误是只改了 args,但 projectName 指向父工程或空着,结果参数传给了错误的 classpath,甚至压根没生效。
-
projectName必须填子模块名(比如"auth-service"),不能是父 pom 所在目录名 -
mainClass要写全限定名(如"com.example.auth.AuthApplication"),别漏包路径 -
args是字符串数组,每个参数单独一项:["--spring.profiles.active=dev", "--server.port=8081"] - 如果参数含空格或特殊字符(如 JSON 字符串),得加引号包裹,且注意 JSON 反斜杠转义问题
Python 调试传参:args 生效前提是 program 指向真实入口文件
VSCode 的 Python 调试器会把 args 原样拼到命令行末尾,比如 python main.py --verbose --config=config.yaml。但前提是 program 的值必须是可执行的 .py 文件路径,不能是目录或包名。
- 用
${file}时,确保当前打开的就是你要调试的入口文件;否则换用绝对路径或工作区相对路径,比如"./src/app.py" - 如果项目用
if __name__ == "__main__":启动,参数能被sys.argv正常捕获;但若通过import方式间接运行,args不会自动注入 - 某些框架(如 FastAPI、Streamlit)不走标准
sys.argv,需改用环境变量或配置文件,这时args就只是摆设
Node.js 调试传参:args 和 runtimeArgs 别混用
Node.js 调试有两个参数字段:args 传给你的脚本,runtimeArgs 传给 node 进程本身。比如想开 inspector 或调 GC 参数,得用后者;想让脚本接收 --port 3000,才用前者。
-
args:["--port", "3000", "--debug"]→ 等价于node app.js --port 3000 --debug -
runtimeArgs:["--inspect-brk", "--max-old-space-size=4096"]→ 影响 V8 行为,不是业务逻辑参数 - 如果用了
npm run dev这类封装脚本,args不会透传到最终 node 命令,得改用program直接指向.js文件 - ESM 项目要注意:Node.js 14+ 默认不支持
import语法,需加"type": "module"或用runtimeArgs: ["--experimental-specifier-resolution=node"]
最容易被忽略的是:args 配置只在 request: "launch" 模式下有效,attach 模式无法传参;另外所有参数都按字符串处理,数字、布尔值不会自动转换类型,得在代码里手动解析。


















