gpt4 book ai didi

node.js - 管理nodejs中的配置以从文件和环境变量中获取变量

转载 作者:太空宇宙 更新时间:2023-11-03 23:16:13 25 4
gpt4 key购买 nike

我有一个配置文件,其中存储密码并使用数据

'use strict';

export default {
dbProd: {
connectionString: 'postgres://...',
},
dbDev: {
connectionString: 'postgres://...',
},
...
}

我还有一个 postgresql 数据库连接文件

'use strict';

import { Pool } from 'pg';
import config from './../config';

export default new Pool({
connectionString: config.dbDev.connectionString,
ssl: true
});

在我的package.json文件中,一共有三个脚本。第一个启动项目,第二个开发,第三个生产

  "scripts": {
"start": "nodemon --exec babel-node src/index.js",
"devbuild": "babel src --out-dir dev-backend",
"build": "babel src --out-dir backend"
},

当我收集生产项目以通过dbProd连接到数据库时需要它,如果开发转移到dbDev 。如何实现?

最佳答案

您应该考虑使用 Node 包config NPM Config ,因为它使这些事情变得更加容易。

您只需要在 /config 文件夹中创建一个 default.json 文件,其中包含您的所有开发配置和不更改的配置开发或生产。您必须创建的第二个文件是 development.json 文件,其中包含覆盖默认 key:values 的所有生产配置。

在您的package.json中,您只需要一个用于生产环境的启动脚本和一个用于开发的启动脚本。这可能看起来像这样:

 "start": "SET NODE_ENV=production& node ./bin/www",
"dev": "node ./bin/www",

通过设置NODE_ENV=product,配置模块将加载默认配置并查看生产文件以找出在生产模式下必须覆盖哪些值。

默认配置文件的简单示例:

{
"Services": {
"api": {
"username": "user",
"password": "password",
"base_url": "https://development.com/test"
}
},
"Network": {
"proxy": {
"host": "http://myproxy/",
"port": 80
}
}
}

如果代理始终相同而只是 API 发生变化,则生产文件将如下所示:

  {
"Services": {
"api": {
"username": "prodUser",
"password": "prodPassword",
"base_url": "https://production.com/test"
}
}
}

现在可以在您的代码中使用它,例如:

const config = require('config');
const serviceConfig = config.get('Services');
const networkConfig = config.get('Network');

networkConfig.get('proxy.host')+":"+networkConfig.get('proxy.port')

关于node.js - 管理nodejs中的配置以从文件和环境变量中获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55157640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com