我使用recursive-readdir模块列出目录中的所有文件类型,下面的代码可以工作,但是我的数组之前显示“未定义”。
下面的代码插入到js文件“test.js”中,并使用“node test.js”从cmd行运行。
有关如何在不返回未定义字符串的情况下最好返回所有必需文件数组的任何建议?
const recursive = require('recursive-readdir');
exports.file = function() {
recursive(__dirname, ['!*.md'], function(error, files) {
var arr = [];
for (var i = 0; i < files.length; i++) {
arr.push(files[i]);
}
console.log(arr);
});
};
console.log( exports.file() );
答案 0 :(得分:1)
如评论exports.file
中所述,没有返回值,这就是您尝试登录时获得undefined
的原因。
如果您希望exports.file
的调用者能够访问这些文件,则需要更新exports.file
以进行可以使用这些文件作为参数调用的回调。
const recursive = require('recursive-readdir');
exports.file = function(callback) {
recursive(__dirname, ['!*.md'], function(error, files) {
var arr = [];
for (var i = 0; i < files.length; i++) {
arr.push(files[i]);
}
console.log(arr);
callback(error, arr);
});
};
exports.file(function(error, files) {
console.log(files);
});
这将记录文件,只需对原始代码进行最少的更改。
根据您需要如何进化此代码,您可以简化这一点。首先,除了arr
之外,您真的需要files
吗?如果没有,您只需将files
传递给回调:
const recursive = require('recursive-readdir');
exports.file = function(callback) {
recursive(__dirname, ['!*.md'], function(error, files) {
callback(error, files);
});
};
exports.file(function(error, files) {
console.log(files);
});
现在,由于您回调recursive
只是调用exports.file
的回调,您只需将exports.file
回调传递给recursive
const recursive = require('recursive-readdir');
exports.file = function(callback) {
recursive(__dirname, ['!*.md'], callback);
};
exports.file(function(error, files) {
console.log(files);
});