我正在尝试获取指定目录中的文件列表但是它的抛出错误任何想法在下面的代码中实现了什么错误。
service.js
var fs = require('fs');
var path = require('path');
var async = require('async');
var filePath = path.resolve('./logs/dit/');
function checkSearchObj () {
fs.readdir(filePath,function (err, files) {
files.forEach(function(file) {
console.log(file);
});
})
}
checkSearchObj();
错误
TypeError: Cannot read property 'forEach' of undefined
at C:\Users\sh529u\WebstormProjects\ulog\app\serverf
s:8:15
at FSReqWrap.oncomplete (fs.js:82:15)
答案 0 :(得分:3)
改变这个:
function checkSearchObj () {
fs.readdir(filePath,function (err, files) {
files.forEach(function(file) {
console.log(file);
});
})
}
到此:
function checkSearchObj () {
fs.readdir(filePath,function (err, files) {
if (err) {
console.log('Error:', err);
return;
}
files.forEach(function(file) {
console.log(file);
});
})
}
了解错误是什么。
您需要检查错误,而不是假设没有错误,否则您将尝试访问未定义的变量,并且您将看到的唯一错误是您访问未定义的而不是实际的错误'在这种情况下,err
中的s。
您的回调将获得err
或files
,但不能同时获得。{/ p>
更改代码后显示错误:
Error: { [Error: ENOENT: no such file or directory, scandir 'C:\Users\Web stormProjects\ulog\app\serverfiles\logs\dit'] errno: -4058, code: 'ENOENT', syscall: 'scandir', path: 'C:\\Users\\sh529u\\WebstormProjects\\ulog\\app\\serverfiles\\logs\\dit'
这意味着程序没有显示目录中的文件,因为没有这样的目录。谜团已揭开。现在您可以看到实际检查错误的实用性。