节点导出对象包含来自文件的数据

时间:2016-05-25 19:06:37

标签: javascript node.js filereader

我正在导出以下对象,该对象从文件

初始化其数据
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读完数据后导出对象。

1 个答案:

答案 0 :(得分:1)

您必须使用fs.readFile的同步版本:

... 
var data = fs.readFileSync('words.txt')
w.words = JSON.parse(data.toString())

要求("加载")其他模块是同步操作。如果要从外部资源填充数据,则必须同步执行此操作。但是,我建议使用模块的显式(和可选的异步)初始化来利用测试并避免意外的副作用。