Skip to content
导航

环境变量

环境变量是指,独立于应用程序代码,特定于环境的变量。

环境变量是由用户自定义的。最常见的环境变量是用于区分开发环境的变量,约定俗成的命名为 NODE_ENV,两个常见值为 developmentproduction

process.env

当 Node.js 进程启动时,会自动加载系统环境变量、用户环境变量到 process.env 对象上。这个对象在进程运行过程中是可读写的,因此使用时必须考虑值无效的情况。

cross-env

在 Linux、MacOS 系统的终端中,可以简单定义当前终端的用户环境变量

shell
> NODE_ENV=development node
REPL> process.env.NODE_ENV
'development'

同样的方法在 Windows 中会报错。

cross-env 是一个第三方库,用于兼容在各系统中,使用相同的方式定义环境变量

shell
C:\path\to\demo> npm i -D cross-env
C:\path\to\demo> npx cross-env NODE_ENV=development node
REPL> process.env.NODE_ENV
'development'

dotenv

当需要配置的环境变量数量较多时,可以将环境变量写入文件方便维护,在Node.js启动时通过第三方库 dotenv 加载文件内容到process.env上。

约定文件位置为:应用根目录 .env 文件

.env
NODE_ENV=development

两种用法:

  1. 模块导入
js
// CommonJS
require('dotenv').config()
// ES Module
import 'dotenv/config' // 文件内容是一个立即执行函数
  1. 命令行选项 预加载模块,参考文档
shell
node -r dotenv/config any.js

运行结果如下:

shell
C:\path\to\demo> node -r dotenv/config
REPL> process.env.NODE_ENV
'development'