launch.json的env字段仅对当前调试进程生效,不继承终端环境或影响构建任务;f5启动的程序读不到终端export的变量,因其运行于全新子进程。

launch.json 里的 env 字段只对当前调试进程生效,不继承终端环境,也不影响构建任务或 IntelliSense —— 这是设计行为,不是配置错误。
为什么 F5 启动的程序读不到你在终端里 export 的变量
VS Code 调试器(如 cppdbg、node、python)启动的是全新子进程,完全脱离你当前终端的 shell 环境。即使你在 iTerm2 里执行了 export NODE_ENV=development,再从该终端启动 VS Code 并按 F5,那个调试进程也看不到它。
-
env必须显式写在launch.json的某个configurations对象内部,不能放在外层或configurations数组之外 - 旧字段名
environment已废弃,用它会导致静默忽略(尤其在老项目迁移时容易踩坑) - 插值语法支持但有限:
"HOME": "${env:HOME}"可用,"SHELL": "$(which zsh)"不可用 ——${env:xxx}只做字符串替换,不执行命令
env 字段中拼接 PATH 的正确写法
很多用户直接写 "PATH": "/opt/homebrew/bin",结果导致系统命令(ls、python3)全挂掉 —— 因为这会覆盖整个 PATH,而非追加。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 必须手动拼接原始值:
"PATH": "${env:PATH}:/opt/homebrew/bin" - Windows 下分隔符是
;,不是:;${env:PATH}会自动带入系统原生分隔符,所以拼接时仍用;即可,例如:"PATH": "${env:PATH};C:\mingw64\bin" - 如果依赖多个路径,顺序很重要:靠前的优先被
which或g++找到;把自定义 bin 放前面,避免误调系统旧版本工具
调试 Python/Node.js 时 env 的特殊注意事项
Python 和 Node.js 调试器对 env 的处理逻辑一致,但实际表现常被误解:
- Python:若用
python.defaultInterpreterPath指定了虚拟环境解释器,env里再设PYTHONPATH是安全的;但不要试图用env替代python.venvPath,后者控制解释器发现逻辑,前者只影响运行时环境 - Node.js:
NODE_OPTIONS放env里有效,但--inspect类参数必须走runtimeArgs字段,混用会报错 - 敏感变量(如 API key)别硬编码进
launch.json;可用${input:myApiKey}配合inputs块实现交互式注入,避免提交到 Git
最易被忽略的一点:修改 launch.json 后,必须重启调试会话(不是重载窗口),否则新 env 不加载 —— VS Code 不会热更新调试环境变量。










