首頁 > web前端 > js教程 > 如何在 Node.js 中設定環境變數

如何在 Node.js 中設定環境變數

Barbara Streisand
發布: 2025-01-17 02:30:10
原創
234 人瀏覽過

How to set environment variables in Node.js

現代軟體需要靈活性、可擴充性和強大的安全性。 環境變數在實現這種平衡方面發揮著至關重要的作用。本指南探討了在 Node.js 應用程式中設定和管理環境變數的各種方法,強調安全性和可維護性的最佳實踐。 我們將涵蓋從啟動驗證到防止敏感資料外洩的所有內容。 無論您是經驗豐富的開發人員還是 Node.js 新手,這些資訊對於建立安全、適應性強的應用程式都是至關重要的。

什麼是環境變數?

環境變數是儲存在應用程式程式碼庫外部的鍵值對,通常位於設定檔或系統設定中。 它們保存 API 金鑰和資料庫憑證等敏感數據,防止硬編碼並提高安全性。 這種方法簡化了不同環境(開發、測試、生產)的管理。

在 Node.js 中,環境變數無需修改程式碼即可實現動態應用程式配置。相同的程式碼庫可以根據環境與不同的資料庫或API交互,增強安全性,簡化部署,提高適應性。

與標準 JavaScript 變數不同,環境變數不在程式碼中定義。它們透過 process.env 存取並獨立存在,可能影響系統上的多個應用程式。

存取 Node.js 中的環境變數

Node.js 使用 process.env 物件來存取和管理環境變數。 若要檢索變數的值,請使用 process.env.VARIABLE_NAME。例如,process.env.API_KEY 檢索與 API_KEY 關聯的值。 雖然技術上可以在程式碼中設定環境變量,但通常不鼓勵這樣做;它首先​​否定了使用環境變量的好處。

以下是 API_KEY 在 Express API 中的使用方式:

<code class="language-javascript">const express = require('express');
const app = express();

// Access API key from environment variables
const apiKey = process.env.API_KEY;

if (!apiKey) {
  console.error('Error: API key is not defined.');
  process.exit(1);
}

app.get('/', (req, res) => {
  res.send('API key successfully loaded.');
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});</code>
登入後複製
登入後複製

在 Node.js 中設定環境變數

現在,讓我們來探索設定環境變數的不同方法:

  1. 使用 dotenv: dotenv 套件透過將環境變數與程式碼分開來簡化管理。 在 .env 檔案中定義鍵值對:
<code>PORT=3000
DB_USERNAME=dbuser</code>
登入後複製
登入後複製

像這樣導入並使用它:

<code class="language-javascript">import * as dotenv from 'dotenv';
dotenv.config();

console.log(process.env.PORT); // Output: 3000
console.log(process.env.DB_USERNAME); // Output: dbuser</code>
登入後複製
登入後複製

您可以使用 .env 指定備用 dotenv.config({ path: './path/to/another.env' }) 檔案路徑。 雖然對開發有用,但請考慮其他生產方法。

  1. 系統層級設定: 在類別 Unix 系統(Linux、macOS)上,將變數加入 shell 設定檔(例如 ~/.bashrc~/.zshrc)。 這會影響該 shell 會話中的所有進程。 例如:
<code class="language-javascript">const express = require('express');
const app = express();

// Access API key from environment variables
const apiKey = process.env.API_KEY;

if (!apiKey) {
  console.error('Error: API key is not defined.');
  process.exit(1);
}

app.get('/', (req, res) => {
  res.send('API key successfully loaded.');
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});</code>
登入後複製
登入後複製

重新啟動終端或執行 source ~/.bashrc 以套用變更。 對於系統範圍的存取(系統進程),請使用 /etc/environment.

  1. 啟動腳本: 建立一個設定變數的腳本,然後執行 Node.js 應用程式(例如 launch.sh):
<code>PORT=3000
DB_USERNAME=dbuser</code>
登入後複製
登入後複製

使其可執行(chmod x launch.sh)並運行它(./launch.sh)。

  1. PM2(進程管理器2): PM2 允許在應用程式啟動期間設定環境變數:
<code class="language-javascript">import * as dotenv from 'dotenv';
dotenv.config();

console.log(process.env.PORT); // Output: 3000
console.log(process.env.DB_USERNAME); // Output: dbuser</code>
登入後複製
登入後複製

或使用 ecosystem.config.js 檔案進行特定於環境的配置。

  1. Docker: 在 Docker 中,使用 Dockerfile:ENV 設定
  2. 中的變量
<code class="language-bash"># ~/.bashrc
export PORT=3000
export DB_USERNAME=myuser</code>
登入後複製

使用 -e PORT=5173 或在 docker-compose.yml 檔案中執行容器時覆寫預設值。

使用環境變數的最佳實務

遵循以下最佳實踐來實現安全且可維護的應用程式:

  • 描述性名稱和文件:使用清晰的描述性名稱並在專案的自述文件中記錄其用途。

  • 啟動驗證:在應用程式啟動時驗證環境變數以確保它們設定正確。 優雅地處理缺少的變數(預設值或錯誤處理)。

  • .env 檔案排除: 使用 .env 從版本控制 (Git) 排除 .gitignore 檔案。

  • 考慮使用 KMS(金鑰管理系統):為了增強安全性,特別是對於高度敏感的數據,請使用 KMS 來加密和儲存您的環境變數。

  • 預設值:為非關鍵環境變數提供預設值,以確保應用程式功能,即使變數遺失也是如此。

  • 切勿在前端暴露:切勿將敏感環境變數直接暴露給客戶端程式碼。

店員對環境變數的使用

Clerk SDK 利用環境變數在 Clerk 儀表板中進行設定和應用程式關聯。 這可以使用 Express 實現安全的後端請求和前端驗證。 例如:

<code class="language-bash">#!/bin/bash
export PORT=3000
export DB_USERNAME=myuser
node app.js</code>
登入後複製

結論

安全管理環境變數至關重要。 透過遵循這些最佳實踐,您將顯著增強 Node.js 應用程式的安全性和可維護性,確保它們為生產部署做好準備。

以上是如何在 Node.js 中設定環境變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板