我有来自客户端的参数,我想设置为readFile
路径,但是在我调用readFile
方法并返回空数组时,它没有设置变量,因为它没有读取目录。我该如何纠正路径问题?
如果我这样做的话
var filesData = {};
console.log('SEARCH ENV PRINTING', searchEnv);
if (searchEnv === 'DIT') {
ditDirectory.readDirectory(function(files) {
filesData.logFiles = files;
filesData.searchEnv = searchEnv;
asyncFiles(filesData);
});
} else if (searchEnv === 'St') {
stDirectory.readDirectory(function(files) {
filesData.logFiles = files;
filesData.searchEnv = searchEnv;
asyncFiles(filesData);
});
}
fs.readFile('logs/dit/'+ logfile.filename, 'utf8', function (err, data) {
console.log('inside readFile', data);
if (err) {
return done(err);
}
});
如果我从用户输入中设置
filesData.searchEnv
则不起作用fs.readFile('logs/' + filesData.searchEnv + '/'+ logfile.filename,
'utf8',
function (err, data) {
console.log('inside readFile', data);
if (err) {
return done(err);
}
});
最佳答案
如果您按照描述的顺序真正调用事物,则filesData.searchEnv
在调用fs.readFile
时将不包含任何内容,因为仅在readDirectory
的异步回调中为其分配值。
因此,您必须将文件读取调用放置在回调中,或者使用Promise等待有效数据。