如何从NodeJS中的模块返回数组

时间:2015-03-30 11:45:16

标签: javascript node.js

我正在编写一个应该根据文件类型从命令行过滤和打印给定目录文件的程序。

mymodule.js:

var fs = require('fs');
var result=[];
exports.name = function() {
fs.readdir(process.argv[2], function (err, list) { 

    for(var file in list){

        if(list[file].indexOf('.'+process.argv[3]) !== -1){
            result.push(list[file]);
        }
    }


});
};

在我的实际文件中 index.js:

var mymodule = require('./mymodule')
console.log(mymodule.name());

运行命令时

 > node index.js SmashingNodeJS js //In SmashingNodeJS folder print all the .js files

console.log打印未定义,请告诉我这里的错误以及如何将内容返回/绑定到导出。

1 个答案:

答案 0 :(得分:2)

我按照上面的Bergi评论修正了它。

mymodule.js:

var fs = require('fs');
exports.name = function(print) { // Added print callback here as param
    var result = [];
    fs.readdir(process.argv[2], function (err, list) { 
        for (var file=0; file<list.length; file++) {
             if (list[file].indexOf('.'+process.argv[3]) !== -1) {
                 result.push(list[file]);
            }
        }
        print(result); // Calling back instead of return 
    });
};

在index.js文件中:

var mymodule = require('./mymodule')
mymodule.name(console.log); // pass the console.log function as callback