Nodejs模块导出返回undefined
我正在使用recursive-readdir模块列出目录中的所有文件types,下面的代码工作,但是我得到“未定义”显示在我的数组之前。
下面的代码插入到一个js文件“test.js”中,并使用“node test.js”从cmd行运行。
任何build议如何最好的返回所有需要的文件数组没有返回未定义的string?
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() );
正如注释中所提到的那样, exports.file
没有返回值,这就是为什么当你尝试logging时你得到了undefined
原因。
如果您希望exports.file
的调用方能够访问这些文件,则需要更新exports.file
以接受可以将这些文件作为参数调用的callback。
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); });
这将以原始代码的最小更改logging这些文件。
根据你如何需要这个代码来演化,你可能会简化一下。 首先,除了files
之外,你真的需要吗? 如果没有,您可以简单地传递files
到callback:
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
的callbackexports.file
,所以你可以简单地将exports.file
callbackexports.file
传递给recursive
exports.file
const recursive = require('recursive-readdir'); exports.file = function(callback) { recursive(__dirname, ['!*.md'], callback); }; exports.file(function(error, files) { console.log(files); });