3 回答

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

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
添加回答
舉報