[英]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.