NodeJS fs Stats.isFile() 未定义

Posted

技术标签:

【中文标题】NodeJS fs Stats.isFile() 未定义【英文标题】:NodeJS fs Stats.isFile() not defined 【发布时间】: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)

我的错误是什么??

【问题讨论】:

【参考方案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 块等的需要。

以上是关于NodeJS fs Stats.isFile() 未定义的主要内容,如果未能解决你的问题,请参考以下文章

fs文件操作模块

node 的fs.state 获取文件信息

NodeJs:fs.stat() 或 fs.access() 检查文件夹是不是存在?

Nodejs 'fs' 方法异步运行

nodejs之fs模块

nodejs入门API之fs模块