我有来自客户端的参数,我想设置为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等待有效数据。

10-02 18:12