节点 fs.stat 名称未定义

Node fs.stat name giving undefined

当我在文件的 fs.stats 函数中执行 console.log(stats) 时,它会给我这样的结果:

{ dev: 16777223, mode: 33188, nlink: 1, uid: 501, gid: 20, rdev: 0, blksize: 4096, ino: 49868100, size: 5617, blocks: 16, atime: Mon Jan 05 2015 18:18:10 GMT-0700 (MST), mtime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), ctime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), birthtime: Thu Sep 25 2014 21:21:28 GMT-0600 (MDT), name: 'README.md', type: 'file' }

这是代码,我使用的是walk node plugin。该函数在每次找到文件时运行。

walker.on('files', function(path, stats, next){
    console.log(stats.name);
    next();
});

但是当我做console.log(stats.name)时,它说它是未定义的。有谁知道我做错了什么?我是不是用错了属性?

查看 fs.Stats 的文档,没有这样的 name 属性。 fs.stat 类似于 stat() ,它在结构中也没有名称 returns 。

如果您想要文件名,甚至不需要调用 stat()。考虑一下:

var fs = require('fs');

fs.readdir('.', function(err, entries) {
    // filenames available here in the array `entries`
    entries.forEach(function(filename) {
        fs.stat('./' + filename, function(err, stats) {
            if (!err) {
                console.log(stats);
            }
        });
    })
});

您在 files 上使用助行器,而不是在 file 上使用助行器。所以 stats 可能包含一组文件,而不仅仅是一个。尝试 console.log(stats) 查看 files.

的统计参数结构

或者试试 walker.on('file', function(path, stats, next){});