javascript - nodejs lstat 找不到文件

标签 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

最佳答案

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

确保您在文件前加上路径,如下所示:

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

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

关于javascript - nodejs lstat 找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53961301/

相关文章:

JavaScript 匹配

node.js - npm 损坏 : cannot find module 'proto-list'

javascript - 通过关系从 Mysql 转换为 Mongo/mongoose

mongodb - Express on Node - 什么数据存储?

git - 如何将我的本地存储库与 GitHub 上的中央存储库同步?

javascript - jQuery 性能 : Chain appends or append multiple arguments?

javascript - 如果我在 openshift origin 上多次调用相同的rest Api,为什么我会得到readystate未定义和状态0?

javascript - 使用特定 id 删除 ng-repeat 中的元素

git - GIT 如何理解它可以获取最新文件而不在 diff 中显示它

python - 在 Azure DevOps Git 存储库中使用来自 Azure Pipelines 的 Python 包版本标记 Git 存储库