Mac原生终端设置的环境变量为何VS Code集成终端及Node.js无法读取?
问题原因与修复方案
原因
- 终端中通过
export设置的环境变量仅作用于当前终端进程及其子进程,VS Code集成终端是独立启动的进程,并非原生终端的子进程,因此无法继承原生终端里临时设置的变量。 - 若VS Code在你设置环境变量之前已经启动,即使后续在原生终端设置变量,VS Code的进程也不会重新读取这些变量,集成终端自然也获取不到。
修复方式
1. 临时生效(仅当前集成终端会话)
直接在VS Code的集成终端内执行:
export MONGO_PASSWORD="PASSWORD"
该变量仅在当前终端窗口关闭前有效,Node.js应用可通过process.env.MONGO_PASSWORD读取。
2. 启动VS Code时传递变量(不修改配置文件)
从原生终端启动VS Code并传递环境变量,这样VS Code及所有集成终端都会继承该变量:
MONGO_PASSWORD="PASSWORD" code .
3. 永久生效(所有终端与VS Code会话)
就是你目前使用的方法,在~/.zshrc文件中添加:
export MONGO_PASSWORD="PASSWORD"
执行source ~/.zshrc使配置立即生效,之后每次启动zsh终端(包括VS Code集成终端)都会自动加载该变量,Node.js应用也能正常读取。
内容的提问来源于stack exchange,提问作者Varun Verma
相关产品推荐
相关产品推荐

