簡體   English   中英

如何在節點應用程序中指定環境變量?

[英]How to specify env variables in node app?

當您要指定 env 變量時,要使用很多對dotenv庫的引用。 但為什么? 我可以在這樣的文件中指定我的 var:

var dev = {
    
}

var prod = {
    
}

var config = null;

if (process.env.NODE_ENV === 'production') {
    config = prod
} else {
    config = dev
}

exports.config = config

並在npm srcipts分配我的 var ,如下所示:

"scripts": {
    "start": "NODE_ENV=dev node bin/dev",
    "production": "NODE_ENV=production node bin/production"
}

我的路不安全嗎? 為什么推薦 dotenv 方式? 為什么我應該創建 .env 文件而不是我的 config.js?

  • 環境變量是在所有編程語言中配置程序行為的常用方法。 大多數 CI/CD 工具也支持開箱即用,並且在命令行中也能很好地工作。

  • 在您的示例中,您假設prd環境的完整配置將存儲在配置中,包括 db 密碼等。在源代碼中存儲任何機密都被認為是不安全的。

  • .env文件是用於捆綁環境變量的常用實用程序。 使用這種模式創建一個.gitignore文件真的很容易,可以防止它被提交,以便配置保持在本地。 請注意,包的使用者不必使用 .env 文件,但也可以具有運行腳本的全局/本地環境變量。 開發扎實,不易出錯。

  • 語法簡單。 而不是創建一個包含配置的臨時源代碼文件,使用比key=value更復雜的語法並且不太容易理解。

@Nastro,我將指出一些簡單的不同方法。

開發您的應用程序 100% 與環境無關。 換句話說,從版本代碼中的文件或很多,如果到全局,會話屬性等指定不同的價值保持距離*

使用適當的 env vars 和值來支持您的環境。 通常,最具戰略意義或特殊的環境將受到保護,免受不必要的訪問(生產、登台等),因此您的秘密值將無法訪問。

單個db_password = process.env.DB_PASS將可用於您或您的團隊創建的任何現有和未來環境。

這是一種簡單而有效的方法,但需要對您的環境和主機進行最低限度的控制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM