节点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.stat
与stat()
类似,在结构体中也没有名字。
如果你想要的文件名,你甚至不需要调用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); } }); }) });