我正在导出以下对象,该对象从文件
初始化其数据function wordsBox(){
this.words= {};
}
var w = new wordsBox();
fs.readFile('words.txt', function (err, data) {
w.words = JSON.parse(data.toString());
});
module.exports = w;
但是,当我尝试从另一个文件访问数据时,它没有读取。
var wordsBox = require('../db/word.reader');
console.log(wordsBox.words);
以下是一个空对象。因此,无论如何都要在fs读完数据后导出对象。
答案 0 :(得分:1)
您必须使用fs.readFile的同步版本:
...
var data = fs.readFileSync('words.txt')
w.words = JSON.parse(data.toString())
要求("加载")其他模块是同步操作。如果要从外部资源填充数据,则必须同步执行此操作。但是,我建议使用模块的显式(和可选的异步)初始化来利用测试并避免意外的副作用。