在Node.js中使用.env文件管理環(huán)境變量的全過(guò)程
引言
Node.js 應(yīng)用程序通常依賴于環(huán)境變量來(lái)管理敏感信息或配置設(shè)置。.env 文件已經(jīng)成為一種流行的本地管理這些變量的方法,而無(wú)需在代碼存儲(chǔ)庫(kù)中公開它們。本文將探討 .env 文件為什么重要,以及如何在 Node.js 應(yīng)用程序中有效的使用它。
為什么使用 .env 文件 ?
Security
在源代碼中保留敏感信息 (如 API 密鑰、數(shù)據(jù)庫(kù)憑據(jù)) 可能會(huì)將它們暴露給意想不到的訪問者。將此數(shù)據(jù)分離到特定于環(huán)境的文件中,您可以使用 .gitignore 輕松地將其排除在版本控制之外。
Configurability
隨著應(yīng)用程序的迭代增長(zhǎng),它們可能需要針對(duì)不同環(huán)境 (開發(fā)、測(cè)試、生產(chǎn)) 使用不同配置。使用 .env 文件有助于在配置和代碼之間保持清晰的分離。
Portability
通過(guò)在代碼中引用環(huán)境變量,您可以維護(hù)一個(gè)易于在不同環(huán)境之間移動(dòng)的一致的代碼庫(kù),只需要更新 .env 文件或給定部署的實(shí)際環(huán)境變量。
如何在 Node.js 中使用 .env 文件
1. Creating the .env file
在項(xiàng)目的根目錄中創(chuàng)建一個(gè) .env 文件,環(huán)境變量定義:key = value
DATABASE_URL=mongodb://localhost:27017/mydb SECRET_KEY=my-secret-key API_KEY=abcdef123456
2. Ignoring the .env file
為了防止你的 .env 文件提交到存儲(chǔ)庫(kù),將其添加到 .gitignore 文件中。
# .gitignore node_modules/ .env
3. Reading the .env file in your application
Node.js 應(yīng)用程序訪問 .env 文件中定義的變量,通常會(huì)使用 dotenv 軟件包。
npm install dotenv
在主應(yīng)用程序文件的頂部(通常是 index.js 或 server.js),導(dǎo)入并配置 dotenv
require('dotenv').config();
console.log(process.env.DATABASE_URL); // Outputs: mongodb://localhost:27017/mydb
通過(guò)調(diào)用 dotenv.config(), .env 文件中的所有變量加載到 process.env,它們?cè)谡麄€(gè)應(yīng)用程序中都可以訪問。
4. Using environment variables in the application
既然已經(jīng)加載了環(huán)境變量,就可以在整個(gè)應(yīng)用程序中使用它們了。例如,當(dāng)連接到 MongoDB 實(shí)例時(shí)
const mongoose = require('mongoose');
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true, useUnifiedTopology: true });
或者在配置 API 時(shí)
const apiKey = process.env.API_KEY;
最佳實(shí)踐
Never commit your .env file:
一定要確保 .env 文件被添加到你的 .gitignore 文件中。
Use descriptive variable names
清晰的名稱使團(tuán)隊(duì)成員更容易理解每個(gè)變量的用途。
Provide a .env.example
與其共享 .env 文件,不如創(chuàng)建一個(gè) .env.example 文件,包含所有鍵但不包含值,這可以作為團(tuán)隊(duì)成員或部署的模板。
Use fallbacks
有時(shí),您可能希望在缺少環(huán)境變量的情況下提供一個(gè)默認(rèn)值。
const apiKey = process.env.API_KEY || 'default-api-key';
Don’t over-rely on .env
對(duì)于較大的應(yīng)用程序或微服務(wù)架構(gòu),請(qǐng)考慮使用專用的配置管理系統(tǒng)或服務(wù)。
到此這篇關(guān)于在Node.js中使用.env文件管理環(huán)境變量的全過(guò)程的文章就介紹到這了,更多相關(guān)Node .env文件管理環(huán)境變量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nodejs中獲取當(dāng)前函數(shù)被調(diào)用的行數(shù)及文件名詳解
這篇文章主要給大家介紹了關(guān)于Nodejs中獲取當(dāng)前函數(shù)被調(diào)用的行數(shù)及文件名的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
Linux 安裝nodejs環(huán)境及路徑配置詳細(xì)步驟
大家都知道linux安裝nodejs有兩種比較常用的方法,一種解壓即可用的方法操作比較簡(jiǎn)便,另一種方法通過(guò)編譯來(lái)安裝,本文重點(diǎn)給大家講解第一種方法,感興趣的朋友跟隨小編一起看看吧2021-11-11
node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例
因工作需求,記錄一次如何在Node中pdf與圖片互轉(zhuǎn)各種操作,這篇文章主要給大家介紹了關(guān)于node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
關(guān)于Node.js中Buffer的一些你可能不知道的用法
網(wǎng)上關(guān)于Node.js中Buffer用法的文章有很多,但是感覺還是不夠詳細(xì),所以這篇文章主要介紹了關(guān)于Node.js中Buffer的一些你可能不知道的用法,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-03-03
node運(yùn)行服務(wù)無(wú)響應(yīng)的解決
這篇文章主要介紹了node運(yùn)行服務(wù)無(wú)響應(yīng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
node.js中的fs.fchownSync方法使用說(shuō)明
這篇文章主要介紹了node.js中的fs.fchownSync方法使用說(shuō)明,本文介紹了fs.fchownSync方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12

