新版Node.js內(nèi)置支持.env文件使用詳解
引言
隨著版本 v20.6.0 的發(fā)布,Node.js 現(xiàn)在內(nèi)置了對(duì).env文件的支持?,F(xiàn)在,您可以完全無(wú)依賴地將環(huán)境變量從.env文件加載到Node.js 應(yīng)用程序中。process.env 加載.env文件現(xiàn)在非常簡(jiǎn)單:
node --env-file .env
1.什么是.env 文件?
.env文件用于配置正在運(yùn)行的應(yīng)用程序中存在的環(huán)境變量。這個(gè)想法來(lái)自“The Twelve-Factor App”方法論,該方法論表示將在環(huán)境中的部署(例如開(kāi)發(fā)、測(cè)試、生產(chǎn))之間可能發(fā)生變化的所有內(nèi)容存儲(chǔ)起來(lái)。
配置不應(yīng)成為應(yīng)用程序代碼的一部分,也不應(yīng)簽入版本控制。API 憑證或其他機(jī)密等內(nèi)容應(yīng)單獨(dú)存儲(chǔ)并加載到需要它們的環(huán)境中。文件.env可讓您管理無(wú)法在環(huán)境中設(shè)置變量的應(yīng)用程序的配置,例如開(kāi)發(fā)計(jì)算機(jī)或CI。
許多不同語(yǔ)言的庫(kù)都支持使用.env文件將變量加載到環(huán)境中,它們通常稱為“dotenv”,Node.js常用的NPM包有 cross-env, dotenv.
2.如何使用 .env 文件?
一個(gè).env文件看起來(lái)長(zhǎng)這樣:
# 開(kāi)發(fā)環(huán)境 .env.development NODE_ENV=development SECRET_KEY=rv3O62d1gu7s8vWpx
通用我們會(huì)將.env文件放置到項(xiàng)目的根目錄中,可以自定義文件命名,通過(guò) --env-file 參數(shù)指定 .env 文件,待 Node.js 程序啟動(dòng)后,就可以從 process.env 中獲取最新的環(huán)境變量。
$ node --env-file .env.development Welcome to Node.js v20.6.0. Type ".help" for more information. > console.log(process.env.NODE_ENV, process.env.SECRET_KEY) development rv3O62d1gu7s8vWpx >
3.與 dotenv 對(duì)比
和dotenv相比,.env 文件支持的功能還相當(dāng)基礎(chǔ)。主要表現(xiàn)如下:
- 您當(dāng)前無(wú)法使用多行值
- 不能使用變量擴(kuò)展
- 您一次只能指定一個(gè)文件。Node.js 將僅使用最后傳遞的 .env 文件,如下示例中,僅使用 .env.production 的變量:
$ node --env-file .env.development --env-file .env.production Welcome to Node.js v20.6.0. Type ".help" for more information. > console.log(process.env.NODE_ENV, process.env.SECRET_KEY) production grv3O62d1gu7s8vWpd
- 如果在環(huán)境和文件中定義了相同的變量,則環(huán)境中的值優(yōu)先,Node.js 中 .env 的實(shí)現(xiàn)并非如此,而是會(huì)將環(huán)境中的覆蓋掉。
隨著 Node.js 版本迭代,.env 文件的特性支持還有很多工作要完善,并且可能會(huì)添加其中一些功能。您可以點(diǎn)擊左下角的“閱讀原文”查看 Github 上更多討論。
4.Node.js 實(shí)現(xiàn)的優(yōu)勢(shì)
盡管這種實(shí)現(xiàn)方式缺少一些功能,但與使用第三方軟件包相比,它還是有一些優(yōu)勢(shì)。Node.js 會(huì)在啟動(dòng)時(shí)加載并解析 .env 文件,因此你可以在文件中加入配置 Node.js 本身的環(huán)境變量,如 NODE_OPTIONS。
NODE_OPTIONS="--no-warnings --inspect=127.0.0.1:9229"
注意:為了避免死循環(huán),不要在 NODE_OPTIONS="--env-file .env.develpment" 配置你的 .env 文件。
總結(jié)
大家可以積極去嘗試 Node.js 20.6.0 版本帶來(lái)的新功能,如穩(wěn)定的測(cè)試運(yùn)行器、模擬計(jì)時(shí)器和現(xiàn)在的 .env 文件支持,以及許多其他升級(jí)、修復(fù)和改進(jìn)。20版本將于10月份成為 Node.js 的 LTS 版本,因此現(xiàn)在是測(cè)試這些新功能并開(kāi)始考慮升級(jí)應(yīng)用程序以利用這些新功能的好時(shí)機(jī)。
以上就是新版Node.js內(nèi)置支持.env文件使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Node.js內(nèi)置.env文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
前端連接tcp服務(wù)接收數(shù)據(jù)的實(shí)現(xiàn)步驟(附代碼)
TCP 協(xié)議是面向連接的通信協(xié)議,即傳輸數(shù)據(jù)之前,在發(fā)送端和接收端建立邏輯連接,再傳輸數(shù)據(jù),這篇文章主要介紹了前端連接tcp服務(wù)接收數(shù)據(jù)的實(shí)現(xiàn)步驟,需要的朋友可以參考下2025-07-07
Node之簡(jiǎn)單的前后端交互(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇Node之簡(jiǎn)單的前后端交互(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Node.JS用純JavaScript生成圖片或滑塊式驗(yàn)證碼功能
有一些Node.JS圖片生成類庫(kù),比如node-captcha等的類庫(kù),需要c/c++程序生成圖片??缙脚_(tái)部署不是很方便。這里介紹幾個(gè)用純JS實(shí)現(xiàn)的圖片驗(yàn)證碼生成模塊,需要的朋友可以參考下2019-09-09
在Node.js中實(shí)現(xiàn)延遲和超時(shí)的方法
Node.js 是一個(gè)功能強(qiáng)大的 JavaScript 運(yùn)行時(shí),它提供了幾種通過(guò)延遲和超時(shí)來(lái)控制執(zhí)行流的方法,本指南將引導(dǎo)你完成在 Node.js 中實(shí)現(xiàn)延遲和超時(shí)的要點(diǎn),確保你的應(yīng)用程序平穩(wěn)高效地運(yùn)行,需要的朋友可以參考下2025-09-09
NPM 安裝cordova時(shí)警告:npm WARN deprecated minimatch@2.0.10: Pleas
這篇文章主要介紹了NPM 安裝cordova時(shí)警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to的相關(guān)資料,需要的朋友可以參考下2016-12-12

