带有文件数据的节点导出对象
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")其他模块是同步操作。如果您想从外部资源填充数据,您也必须同步进行。但是,我建议对模块进行显式(和可选的异步)初始化,以利用测试并避免意外的副作用。
我正在导出以下对象,该对象从文件中初始化其数据
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")其他模块是同步操作。如果您想从外部资源填充数据,您也必须同步进行。但是,我建议对模块进行显式(和可选的异步)初始化,以利用测试并避免意外的副作用。