【问题标题】:NodeJS fs Stats.isFile() not definedNodeJS fs Stats.isFile() 未定义
【发布时间】:2014-04-05 03:38:16
【问题描述】:

我是 NodeJS 的新手,我正在尝试递归读取目录这是我的代码

var fs = require('fs');
var readDir = function (dir, calback) {
fs.readdir(dir, function (err, files) {
    if (err)
        console.log(err);

    for (var file in files) {
        fs.stat(dir + "/" + file, function (err, stats) {
            if (err)
                console.log(err);

            if (stats.isFile()) {
                calback(dir + "/" + file);
            }
            if (stats.isDirectory()) {
                walk(file, calback);

            }
        });
    }
});
};

这是我的错误消息

C:\Users\Lukas\Desktop\Enide-Studio-05-kepler-win32\ws\PlayerTest\hello-world-server.js:24
            if (fs.stats.isFile()) {
                         ^
TypeError: Cannot call method 'isFile' of undefined
    at C:\Users\Lukas\Desktop\Enide-Studio-05-kepler-win32\ws\PlayerTest\hello-world-server.js:24:30
    at Object.oncomplete (fs.js:107:15)

我的错误是什么??

【问题讨论】:

    标签: node.js filesystems undefined typeerror fs


    【解决方案1】:

    遇到错误后,您并未退出函数。

     fs.stat(dir + "/" + file, function (err, stats) {
            if (err) {
                console.log(err);
                return; // exit here since stats will be undefined
            }
    
            if (stats.isFile()) {
                calback(dir + "/" + file);
            }
            if (stats.isDirectory()) {
                walk(file, calback);
    
            }
        });
    

    【讨论】:

    • +1 表示正确答案。也可以写成return console.log(),因为不返回任何内容在功能上等同于return undefined,并且console.log 的结果是undefined。我还要补充一点,有些人认为return callback(...) 也是一个好习惯。它有时会节省 else 块等的需要。
    猜你喜欢
    • 2020-06-28
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2019-08-20
    • 2018-08-23
    • 2022-01-18
    相关资源
    最近更新 更多