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
添加回答
举报