我正在尝试使用以下代码列出目录中的所有文件(以及任何子目录中的文件):
var fs = require('fs')
var walk = function(directoryName) {
fs.readdir(directoryName, function(e, files) {
files.forEach(function(file) {
fs.stat(file, function(e, f) {
if (f.isDirectory()) {
walk(file)
} else {
console.log('- ' + file)
}
})
})
})
}
walk(__dirname)
然而,当我的代码第8行企图调用
walk(file)
时,我得到以下错误:TypeError: Cannot call method 'isDirectory' of undefined
at program.js:7:15
at Object.oncomplete (fs.js:107:15)
为什么f未定义?如果我有以下目录结构,代码不应该将aaa.txt
和bbb.txt
识别为文件,将my_dir
识别为一个目录,然后递归调用walk
并再次开始过程(以zzz.txt
作为f的值)吗?
- aaa.txt
- bbb.txt
+ my_dir
- zzz.txt
e
,可能出现了错误。 - E net4