【发布时间】:2015-08-19 09:03:57
【问题描述】:
很抱歉,这可能很容易成为一个幼稚的问题,但我正在尝试弄清楚节点是如何工作的,尤其是对于这样的问题:
我需要做的是通过 require 和 module.exports 从 fs.readFile 发送一个对象/文件。这是我试过的就是这个
在一个文件(称为 app.js)中读取文件的代码:
var fs = require('fs');
var file_contents = undefined;
var callback_reader = function(err, data) {
if (err) return console.error(err);
file_contents = data.toString().split('\n');
}
module.exports = {
parseFile: function(file_path) {
fs.readFile(file_path.toString(), 'utf-8', callback_reader);
}
}
在其他一些文件中,(称为main.js)我需要像这样使用readFile读取的文件内容
var file_importer = require('./app.js')
file_importer.parseFile(real_path_to_file);
但如果我尝试最后一行的 console.log,我总是会得到未定义的对象。现在我知道这是因为回调没有在 console.log 之前执行,但我不确定如何实现这种通信。
【问题讨论】:
-
你没有从 callback_reader 返回文件内容,你需要 var file = file_importer.parse.... console.log(file)
-
好的,如果我在 app.js 的 callback_reader 中使用 return file_contents 并像@molda 描述的那样在 main.js 中调用控制台日志,我仍然在日志中未定义。
标签: javascript node.js