新版Node.js內(nèi)置支持.env文件使用詳解
引言
隨著版本 v20.6.0 的發(fā)布,Node.js 現(xiàn)在內(nèi)置了對.env文件的支持?,F(xiàn)在,您可以完全無依賴地將環(huán)境變量從.env文件加載到Node.js 應(yīng)用程序中。process.env 加載.env文件現(xiàn)在非常簡單:
node --env-file .env
1.什么是.env 文件?
.env文件用于配置正在運行的應(yīng)用程序中存在的環(huán)境變量。這個想法來自“The Twelve-Factor App”方法論,該方法論表示將在環(huán)境中的部署(例如開發(fā)、測試、生產(chǎn))之間可能發(fā)生變化的所有內(nèi)容存儲起來。
配置不應(yīng)成為應(yīng)用程序代碼的一部分,也不應(yīng)簽入版本控制。API 憑證或其他機(jī)密等內(nèi)容應(yīng)單獨存儲并加載到需要它們的環(huán)境中。文件.env可讓您管理無法在環(huán)境中設(shè)置變量的應(yīng)用程序的配置,例如開發(fā)計算機(jī)或CI。
許多不同語言的庫都支持使用.env文件將變量加載到環(huán)境中,它們通常稱為“dotenv”,Node.js常用的NPM包有 cross-env
, dotenv
.
2.如何使用 .env 文件?
一個.env文件看起來長這樣:
# 開發(fā)環(huán)境 .env.development NODE_ENV=development SECRET_KEY=rv3O62d1gu7s8vWpx
通用我們會將.env文件放置到項目的根目錄中,可以自定義文件命名,通過 --env-file
參數(shù)指定 .env 文件,待 Node.js 程序啟動后,就可以從 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 對比
和dotenv相比,.env 文件支持的功能還相當(dāng)基礎(chǔ)。主要表現(xiàn)如下:
- 您當(dāng)前無法使用多行值
- 不能使用變量擴(kuò)展
- 您一次只能指定一個文件。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 的實現(xiàn)并非如此,而是會將環(huán)境中的覆蓋掉。
隨著 Node.js 版本迭代,.env 文件的特性支持還有很多工作要完善,并且可能會添加其中一些功能。您可以點擊左下角的“閱讀原文”查看 Github 上更多討論。
4.Node.js 實現(xiàn)的優(yōu)勢
盡管這種實現(xiàn)方式缺少一些功能,但與使用第三方軟件包相比,它還是有一些優(yōu)勢。Node.js 會在啟動時加載并解析 .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 版本帶來的新功能,如穩(wěn)定的測試運行器、模擬計時器和現(xiàn)在的 .env 文件支持,以及許多其他升級、修復(fù)和改進(jìn)。20版本將于10月份成為 Node.js 的 LTS 版本,因此現(xiàn)在是測試這些新功能并開始考慮升級應(yīng)用程序以利用這些新功能的好時機(jī)。
以上就是新版Node.js內(nèi)置支持.env文件使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Node.js內(nèi)置.env文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Nodejs使用mysql2操作數(shù)據(jù)庫的方法完整講解
MySQL2是一個基于Node.js的MySQL數(shù)據(jù)庫驅(qū)動程序,它是MySQL官方推薦的驅(qū)動之一,下面這篇文章主要給大家介紹了關(guān)于Nodejs使用mysql2操作數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2024-01-01PHP和NodeJs開發(fā)的應(yīng)用如何共用Session
這篇文章主要介紹了PHP和NodeJs開發(fā)的應(yīng)用如何共用Session的相關(guān)資料及思路,需要的朋友可以參考下2015-04-04基于promise.js實現(xiàn)nodejs的promises庫
promise是JavaScript實現(xiàn)優(yōu)雅編程的一個非常不錯的輕量級框架。該框架可以讓你從雜亂的多重異步回調(diào)代碼中解脫出來,并把精力集中到你的業(yè)務(wù)邏輯上。2014-07-07nodejs?express路由匹配控制及Router模塊化使用詳解
這篇文章主要為大家介紹了nodejs?express路由匹配控制及Router模塊化使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10