带有文件数据的节点导出对象

Node export object with data from file

我正在导出以下对象,该对象从文件中初始化其数据

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读完数据后导出object呢

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

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

需要("loading")其他模块是同步操作。如果您想从外部资源填充数据,您也必须同步进行。但是,我建议对模块进行显式(和可选的异步)初始化,以利用测试并避免意外的副作用。