节点fs.stat名称给定未定义

当我做一个文件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节点插件 。 每次find文件时都会运行该函数。

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

但是当我做console.log(stats.name) ,它说,它是未定义的。 有谁知道我在做什么错? 我以某种方式使用错误的属性?

您正在使用walker files而不是walker。 所以统计可能包含一个文件数组,而不仅仅是一个。 尝试console.log(stats)查看files的统计参数结构。

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

fs.Stats文档没有这样的name属性。 fs.statstat()类似,在结构体中也没有名字。

如果你想要的文件名,你甚至不需要调用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); } }); }) });