PJCHENder 未整理筆記

[Node] 環境變數設置 NODE_ENV (environment variable)

2017-10-03

[Node] 環境變數設置 NODE_ENV (environment variable)

keywords: 環境變數, env, process.env, cross-env, dotenv

Environment variables in Node.js. The Right way! @ DEV

使用 node 指令時

使用 node 指令執行程式時:

1
2
3
4
$ export NODE_ENV=development && node index.js  # Mac,寫法一
$ NODE_ENV=development node index.js # Mac,寫法二

$ set NODE_ENV=development && node index.js # Windows

在該 index.js 中即可使用 process.env.NODE_ENV 取得該變數的值:

1
process.env.NODE_ENV

process.env.NODE_ENV在哪儿设置 @ CNode.js

使用 npm 指令時

使用 npm 指令時,可以直接在 package.jsonscripts 屬性內設定:

1
2
3
4
5
{
"scripts": {
"dev": "NODE_ENV=foo && node index.js",
},
}

一樣可以在 index.js 中透過 process.env.NODE_ENV 取得該變數的值。

cross-env

但若該專案會跨作業系統(即,windows)使用,建議搭配套件 cross-env 使用,只需要 package.json 中執行程式的指令前加上 cross-env

1
2
3
4
5
{
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
}
}

cross-env @ npm

dotenv

dotenv @ npm

透過 dotenv 可以取得專案根目錄底下的 .env 檔案:

1
2
3
// .env
ID=xxxxxxxx
SECRET=xxxxxxxx

使用時只需要在檔案中呼叫 require('dotenv').config() 即可取得 process.env 的內容:

1
2
3
4
5
6
7
8
// 在根目錄底下新增 .env 檔

// 載入 dotenv
require('dotenv').config()

// 使用環境變數
process.env.SECRET
process.env.ID

或者也可以在 package.json 的 script 去執行:

1
2
3
4
5
6
7
8
9
10
{
// ...
"scripts": {
"start": "node bin/www.js",
"dev": "node -r dotenv/config bin/www.js"
// For nodemon users ====
// "dev": "nodemon -r dotenv/config bin/www.js"
}
// ...
}

掃描二維條碼,分享此文章