新版Node.js內(nèi)置支持.env文件使用詳解
引言
隨著版本 v20.6.0 的發(fā)布,Node.js 現(xiàn)在內(nèi)置了對(duì).env文件的支持?,F(xiàn)在,您可以完全無(wú)依賴(lài)地將環(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)境中,它們通常稱(chēng)為“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)文章
Nodejs使用mysql2操作數(shù)據(jù)庫(kù)的方法完整講解
MySQL2是一個(gè)基于Node.js的MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,它是MySQL官方推薦的驅(qū)動(dòng)之一,下面這篇文章主要給大家介紹了關(guān)于Nodejs使用mysql2操作數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2024-01-01PHP和NodeJs開(kāi)發(fā)的應(yīng)用如何共用Session
這篇文章主要介紹了PHP和NodeJs開(kāi)發(fā)的應(yīng)用如何共用Session的相關(guān)資料及思路,需要的朋友可以參考下2015-04-04Node.js 應(yīng)用跑得更快 10 個(gè)技巧
Node.js 受益于它的事件驅(qū)動(dòng)和異步的特征,已經(jīng)很快了。本文將介紹 10 條,經(jīng)過(guò)檢驗(yàn)得知可大大提高 Node 應(yīng)用的技巧。廢話不多說(shuō),讓我們逐條來(lái)看看2016-04-04基于promise.js實(shí)現(xiàn)nodejs的promises庫(kù)
promise是JavaScript實(shí)現(xiàn)優(yōu)雅編程的一個(gè)非常不錯(cuò)的輕量級(jí)框架。該框架可以讓你從雜亂的多重異步回調(diào)代碼中解脫出來(lái),并把精力集中到你的業(yè)務(wù)邏輯上。2014-07-07nodejs?express路由匹配控制及Router模塊化使用詳解
這篇文章主要為大家介紹了nodejs?express路由匹配控制及Router模塊化使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10