node.js - 从文件加载JSON配置文件时运行app

时间:2017-11-05 21:23:11

标签: node.js asynchronous configuration-files

由于fs.read/write函数是异步的,我想知道什么是正确的实现方式,一开始webapp继续运行,当从.json文件加载设置JSON obj时。

如果完成了一个fileJSON.js模块来从.json文件中进行保存和加载,但是如何正确使用它来实现我所描述的内容:

const fs = require('fs');

module.exports = {

    save: function(path, json, callback) {
        if(typeof json === "object"){
            json = JSON.stringify(json, null, 2);
        }
        if(typeof json === "string"){
            return fs.writeFile(path, json, 'utf8', callback);
        }else{
            return error("argument not an obj or a string");
        }
    },

    load: function(path, callback) {
        fs.readFile(path, 'utf8', function(err, data){
            if (err){
                console.log(err);
                return "shit happened - see log";
            } else {
                let obj = JSON.parse(data); //now it an object
                callback(obj);
                return true;
            }
        });
    }

}

2 个答案:

答案 0 :(得分:1)

如果您只需要它在启动时运行(例如,您不希望在不重新启动应用程序的情况下重新加载的配置文件),最简单的方法就是require它。

const config = require('./config.json');

只要应用程序正在运行,它就会同步运行并将结果缓存在npm缓存中。

答案 1 :(得分:1)

在环境中存储配置是twelve factor app 的一部分,因此您可能需要使用Dotenv包。它用于将配置变量导出到环境。只需在yout项目的根目录中创建.env文件。

// .env
HOST_ADDRESS=localhost:9000

使用require选项运行脚本,如下所示:

node -r dotenv/config index.js

您可以像这样访问变量:

console.log(proccess.env.HOST_ADDRESS)