由于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;
}
});
}
}
答案 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)