亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

來自環境的 config.json 中的動態設置

來自環境的 config.json 中的動態設置

繁星coding 2022-06-05 10:31:47
在我的 config.json 中,我需要根據環境變量設置動態填充設置對象。"somesetting": {    "setting1": "%S1%",    "setting2": "%S2%"}我的環境是Windows。我遇到的許多示例都有硬編碼值,我無法理解如何處理我的場景。我對 npm 和 javascript 世界很陌生。非常感謝您對此事的任何建議/參考編輯 2: 可能,我錯過了它,但我的情況是 %S1% 和 %S2% 的值在不同的環境中可能不同。將 S1 和 S2 視為一些路徑,這些路徑可能會根據我的代碼在云上構建的機器而有所不同,例如C:\xyz,D:\xyz我無法預先知道。所以這意味著即使我的環境不同,我也不能在其中設置靜態設置。謝謝
查看完整描述

3 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

JSON 是一個靜態文件,它的內容是一個字符串,所以你不能在這里使用變量。


您可以嘗試使用fs模塊readFile和writeFile.


也許模板引擎喜歡Handlebars并且Mustache會幫助您更輕松地做到這一點。


但通常開發人員為一種環境使用一個靜態文件。您只能在啟動應用程序之前更改配置,否則您可以在運行時破壞它(對您的用戶和客戶來說太糟糕了)。


看看這個 https://www.npmjs.com/package/config 它是基于 JSON 的配置。我們使用這個包已經很多年了,它對于一些環境來說非常好。


基礎設施

config/

- default.json

- development.json

- staging.json

- production.json

app.js

*/

用法

/*  default.json */

{

  "HTTP":  {

    "PORT": 3001,

    "MESSAGE": "Hello!"

  }

}

/*  development.json */

{

  "HTTP":  {

    "PORT": 4001

  }

}

/* app.js */

const config = require('config');


const message = config.get('HTTP.MESSAGE');

// "Hello!" (from default.json)


const port = config.get('HTTP.PORT');

// 4001 (from development.json, overrides 3001)

/* Windows */

set NODE_ENV=development& app.js


/* Linux */

NODE_ENV=development app.js


/* cross-platform */

cross-env NODE_ENV=development app.js


查看完整回答
反對 回復 2022-06-05
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

dotenv是在 node.js 中管理環境變量的常用解決方案。

您可以為所需的每個環境定義一個.env文件。然后將它們作為節點環境變量訪問。

根據您的用例,您可以使用環境變量來填充您的 config.json,或者您可能根本不需要配置文件,可以直接使用環境變量。


查看完整回答
反對 回復 2022-06-05
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

如果我理解正確,您希望在 Node.js 應用程序中使用 Windows 環境變量,以便這些值來自主機操作系統/環境本身,而不是硬編碼在配置文件中,這是正常的 CICD 要求. Windows 環境變量將在默認安裝 Node.js 的任何地方可用。您不需要任何額外的軟件包。系統和用戶環境變量都將在 Node.js 進程環境 process.env.whatever 中可用。例如:


const setting1 = process.env.setting1

const setting2 = process.env.setting2

但是,正如@max-starling 所說,您不能在 .json 文件中使用它們,因為它們是靜態文件。在這種情況下,我認為 JavaScript 配置文件更有意義。


主 app.js


import config from './config'

console.log(config.setting1)

配置.js


const somesetting = {

  setting1: process.env.setting1,

  setting2: process.env.setting2

}

module.exports = somesetting; 

節點文檔:https ://nodejs.org/api/process.html#process_process_env


查看完整回答
反對 回復 2022-06-05
  • 3 回答
  • 0 關注
  • 240 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號