nodejs lstat找不到文件

时间:2018-12-28 16:13:14

标签: javascript node.js git file

我递归列出文件,但是当我尝试列出子目录中的所有文件时出现以下错误。

Error: ENOENT: no such file or directory, lstat 'config'
    at Object.lstatSync (fs.js:838:3)
    at files.forEach.file (D:\merkletrool\dataAccess.js:13:32)
    at Array.forEach (<anonymous>)
    at fs.readdir (D:\merkletrool\dataAccess.js:12:15)
    at FSReqWrap.oncomplete (fs.js:141:20)

代码如下:

function listAllFiles(path) {
    console.log("directory path " + path);
    fs.readdir(path, (err, files) => {
        if (err) {
                console.log(err);
        }
        files.forEach(file => {
            let file_stat = fs.lstatSync(file);
            if (file_stat.isFile()) {
                list_files.push(file);
                console.log("is file");
            } else if (file_stat.isDirectory()) {
                console.log(file + " here");
                listAllFiles(path + file + "\\");
            }
        });
    });
}

起初,我认为路径不正确,所以,我添加了

path + file + "\\"

但是问题不在于此。错误SEEMS与.git文件夹中名为“ config”的文件有关。由于某种原因,我不明白,它说它不存在,但是确实存在。有任何提示可以帮助我理解和修复吗?

完整的控制台日志:

enter image description here

1 个答案:

答案 0 :(得分:1)

您的第一个直觉确实是正确的。该错误明确表明您正在尝试从当前工作目录而不是config目录中读取文件.git

确保使用路径添加文件前缀,如下所示:

files.forEach(file => {
    let file_stat = fs.lstatSync(require('path').join(path, file));

(注意:通常,您最好将const path = require('path');放在文件顶部。我建议这样做,但是请确保重命名函数参数path-filePath是一个很好的替代方法。 )