fs.readdir在函数内部调用时返回undefined

时间:2016-11-16 10:04:15

标签: javascript node.js fs

我正在尝试编写一个带路径的函数,并返回该目录中的所有文件。

当我这样做时:

function getDirectories(path) {
  fs.readdir(path, function(err, content) {
    if (err) {
      return err;
    } else {
      return content;
    }
  });
}

console.log(getDirectories('./XML/'));

我在控制台中获得了undefined

但是当我这样做时:

function getDirectories(path) {
  fs.readdir(path, function(err, content) {
    if (err) {
      return err;
    } else {
      console.log(content);
    }
  });
}

我得到了文件名为字符串的预期数组。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

fs.readdir是异步使用它:

function getDirectories(path, callback) {
    fs.readdir(path, function (err, content) {
        if (err) return callback(err)
        callback(null, content)
    })
}

getDirectories('./XML', function (err, content) {
    console.log(content)
})

答案 1 :(得分:0)

我遇到了同样的问题,并通过使用fs.readdirSync

解决了该问题。
function getDirectories(path) {
  fs.readdirSync(path, function(err, content) {
    if (err) {
      return err;
    } else {
      return content;
    }
  });
}

应该工作