我正在编写一个程序,它应该根据文件类型从命令行过滤和打印给定目录的文件。
我的模块.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]);
}
}
});
};
在我的实际文件中 索引.js:
var mymodule = require('./mymodule')
console.log(mymodule.name());
当运行命令时
> node index.js SmashingNodeJS js //In SmashingNodeJS folder print all the .js files
console.log 正在打印未定义的内容,请让我知道我在这里做错了什么以及如何返回/绑定(bind)内容以导出。
最佳答案
我按照上面 Bergi 的评论修复了它。
我的模块.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
关于javascript - 如何从 NodeJS 中的模块返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29345394/