next.js - .env 環境參數
Next.js, react.v17, .env, 環境參數。
主要參考文章
重點紀錄
next.js
環境參數有幾種, .env
在 Next.js versions 9.4 以後才支援。另一種next.config.js
的方法是舊的,可能仍有用作但不建議使用。
Environment variables are looked up in the following places, in order, stopping once the variable is found.
.env
檔有幾種型態,載入順序如下:
process.env
.env.$(NODE_ENV).local
.env.local
(Not checked whenNODE_ENV
istest
.).env.$(NODE_ENV)
.env
For example, if NODE_ENV
is development
and you define a variable in both .env.development.local
and .env
, the value in .env.development.local
will be used.
.env
內建環境參數
.env
內建環境參數process.env.NODE_ENV
//執行環境 := [development|production]
.env
設定內容原則性不公開
.env
設定內容原則性不公開不能在browser直接查看環境參數內容,若要則環境參數名稱開頭必需是NEXT_PUBLIC_
,如:NEXT_PUBLIC_APP_NAME
, NEXT_PUBLIC_APP_VERSION
。
.env
讀取指令與特性
.env
讀取指令與特性// 讀取指令必需有『process.env.』,或說需用"全名"才有效。
const ENV_NAME = process.env.ENV_NAME;
// 無法傳遞 reference
const env = process.env; // 這指令合法但無效。
const ENV_NAME = env.ENV_NAME; //※注意:這指令無效。
const json = JSON.stringify(process.env); //※注意:這指令無效。
關於.env
部署正式環境
.env
部署正式環境.env
檔在bundle後就找不到明文.env檔可以設定了,也就是在部署正式環境前就要設定好。
.env
檔在專案的位置
.env
檔在專案的位置程式碼紀錄
設定.env
環境參數
# 參考說明:Next.js - Environment Variables
# https://nextjs.org/docs/basic-features/environment-variables#
DB_HOST=localhost
DB_PORT=1433
DB_USER=sa
DB_PASS=sa_password
DB_NAME=YourDB
NEXT_PUBLIC_APP_NAME=我是可公開的環境參數
# 環境參數原則上不公開,
# 若要公開則環境參數的名稱開頭必需是NEXT_PUBLIC_*
讀取.env
環境參數
/// 特殊函式: 只會在 Server 端執行。
/// will be passed to the page component as props
/// ※下面讀取.env並公開,這不是正式開發時的建議用法因為可能會曝露密秘資料,這只用於測試或除錯。
export async function getServerSideProps(context) {
return {
props: {
env: {
NODE_ENV: process.env.NODE_ENV, // ※內建參數[production|development]。
DB_HOST: process.env.DB_HOST,
DB_PORT: process.env.DB_PORT,
DB_USER: process.env.DB_USER,
DB_PASS: process.env.DB_PASS,
DB_NAME: process.env.DB_NAME,
NEXT_PUBLIC_APP_NAME: process.env.NEXT_PUBLIC_APP_NAME
}
}
}
}
EOF
Last updated