Windows系统下如何设置process.env.SOME_KEY并在Node.js中读取?
在Windows上设置Node.js环境变量并成功读取的完整指南
我明白你遇到的困扰——设置了process.env.SOME_KEY但读取时一直返回undefined,这在Windows上确实容易因为终端语法差异或者环境变量生效机制踩坑。下面分场景给你讲清楚正确的操作步骤:
一、临时设置(仅当前终端会话有效)
这种方式适合快速测试,关闭终端后变量就会消失:
CMD命令提示符:
直接输入:set SOME_KEY=some value如果变量值包含空格,记得用双引号包裹:
set SOME_KEY="some value with spaces"输入完直接在同一个窗口启动你的Node.js应用即可。
PowerShell:
语法和CMD不一样,要这么写:$env:SOME_KEY = "some value"同样,值有空格的话用引号包裹,设置完在当前PowerShell窗口启动应用。
二、永久设置(所有终端/会话生效)
如果希望每次打开终端都能用到这个变量,就需要永久配置:
1. 图形界面操作(最直观)
- 右键点击「此电脑」→ 选择「属性」
- 点击「高级系统设置」→ 弹出「系统属性」窗口后切换到「高级」标签
- 点击「环境变量」,在「用户变量」(仅当前用户生效)或「系统变量」(所有用户生效)区域点击「新建」
- 变量名填
SOME_KEY,变量值填some value,点击确定保存 - 关键:重启所有打开的终端窗口,或者注销再登录,新的环境变量才会生效
2. 命令行永久设置(适合喜欢敲命令的同学)
CMD(需要管理员权限):
设置用户变量:setx SOME_KEY "some value"设置系统变量(加
/m参数):setx /m SOME_KEY "some value"注意:setx设置后必须重启终端才能生效,它无法直接在当前窗口即时生效。
PowerShell(需要管理员权限):
设置用户变量:[Environment]::SetEnvironmentVariable("SOME_KEY", "some value", "User")设置系统变量:
[Environment]::SetEnvironmentVariable("SOME_KEY", "some value", "Machine")同样,设置完要重启终端或者注销登录才能生效。
三、Node.js中读取环境变量的正确姿势
在你的Node.js代码里,直接读取process.env.SOME_KEY就行,比如:
const someKeyValue = process.env.SOME_KEY; console.log('读取到的SOME_KEY值:', someKeyValue);
⚠️ 重要提醒:如果是临时设置的变量,必须在设置变量的同一个终端窗口启动Node应用,新窗口不会继承临时变量;如果是永久设置的,一定要重启终端后再启动应用。
四、常见踩坑点排查
如果还是读取到undefined,可以检查这几点:
- 是不是在错误的终端设置了变量?比如在CMD里设置,却在PowerShell里启动应用(临时变量不跨终端)
- 永久设置后有没有重启终端?环境变量不会实时加载,必须重启终端或注销
- 变量值有特殊字符/空格时有没有加引号?没加的话可能会被截断
- 是不是先启动了Node应用再设置的变量?应用启动后不会实时读取新的环境变量,必须重启应用
内容的提问来源于stack exchange,提问作者BGeorge
相关产品推荐
相关产品推荐

