WebStorm 不自动读取 .env 文件或 shell 环境变量,必须手动在 Run Configuration 的 Environment variables 中配置,如 NODE_ENV=development;推荐使用 EnvFile 插件加载 .env 文件或通过 npm script 结合 dotenv 加载,避免进程间变量隔离导致的调试异常。

WebStorm 项目环境变量必须手动配置,它不会自动读取 .env 文件或 shell 环境。 即使你本地终端里 echo $NODE_ENV 能输出 development,WebStorm 启动的进程默认完全不继承这些——调试、运行、甚至 npm 脚本执行时都可能因变量缺失而行为异常(比如监听端口错乱、日志关闭、插件未启用)。
Run Configuration 里填 Environment variables 最直接
这是最常用、最可控的方式,适用于调试和运行单个脚本:
- 打开
Edit Configurations…→ 选中你的 Node.js 或 npm 配置 - 在
Environment variables栏填入键值对,用分号分隔(Windows)或冒号(macOS/Linux),例如:NODE_ENV=development;PORT=3001 -
Working directory必须设为项目根目录(即含package.json的目录),否则process.env可能被后续 require 链覆盖 - 不要写
process.env.PORT || 3000这类 fallback —— 调试时应让变量明确存在,避免掩盖配置问题
想复用 .env 文件?得靠插件或脚本代理
WebStorm 原生不解析 .env。如果多个项目共用同一套变量(比如 .test1.env、.local.env),有两条路:
- 装
EnvFile插件(JetBrains 官方维护),启用后可在 Run Configuration 里勾选Load environment variables from file,再指定路径,如.env.local - 不用插件的话,改
package.json的 script:把"dev": "node -r dotenv/config ./src/server.js dotenv_config_path=.env.local",然后 WebStorm 的 npm 配置里选这个 script —— 这样变量由 Node 进程加载,而非 IDE 注入 - 注意:
cross-env和 WebStorm 的 Environment variables 字段功能重叠,二者选其一即可,混用可能导致覆盖或冲突
全局环境变量不推荐,但真要设就得走系统级
WebStorm 没有“项目模板级”或“IDE 全局级”的环境变量开关。所谓“全局”,实际只有两种落地方式:
- 修改系统 shell 配置(
~/.zshrc、/etc/environment等),然后**从该终端启动 WebStorm**(如 macOS 上终端执行open -a "WebStorm.app"),否则 IDE 仍不继承 - 通过
WEBIDE_VM_OPTIONS或IDEA_JVM_OPTS设置 JVM 级变量,但这只影响 IDE 自身,不影响 Node 子进程 —— 对项目环境变量无效 - 多项目同文件夹下共享变量,最稳做法仍是每个 Run Configuration 单独配,或统一走
dotenv+ npm script
真正容易被忽略的是:环境变量作用域是按进程隔离的。你在 Terminal 里 export NODE_ENV=test,只影响那个终端 Tab;WebStorm 的 Debug 控制台、Run 窗口、甚至嵌入式 Terminal 都是独立子进程,彼此不传递变量。配置漏掉任意一个环节,就可能跑出 production 行为却以为还在 dev 模式下。











