nodeJS在模块之间共享变量

时间:2020-07-01 22:52:09

标签: node.js

我的项目有问题,我需要在模块之间共享配置参数,有入口点

app.js

const { requestConfiguracion }  = require('./clases/servicios');
( async () => {
    const dbConfig              = await requestConfiguracion();     
})();

servicios.js

const axios         = require('axios').default;

const requestConfiguracion = async () => {
    try {
        const request   = await axios.get('http://localhost/config/getConfig');
        return request.data;        
    } catch (error) {
        console.error(error)
    }
}

module.exports = {
    requestConfiguracion,
}

我需要dbConfig中的配置可用于其他模块。

1 个答案:

答案 0 :(得分:0)

您可以创建一个单独的模块来读取和导出该dbConfig。

// db-config.js
const { requestConfiguracion } = require('./clases/servicios');
let dbConfig = null;

module.exports.getDbConfig = async () => {
    if (dbConfig) return dbConfig; // cache dbConfig for next time
    dbConfig = await requestConfiguracion();
    return dbConfig;
};

在其他模块中:

// app.js
const { getDbConfig } = require('./db-config');

async function someFunction() {
    const dbConfig = await getDbConfig();
    // do something
}

由于您的requestConfiguracion()函数是一个异步函数,因此每次尝试获取该配置时都必须使用await