Mam taki plik, który ma korzystać z modułu:
var mymodule = require('./filtered2Module.js');
var dir = process.argv[2]; //katalog w ktorym wyszukujemy pliki
var ext = process.argv[3]; //koncowka pliku w/g ktorej filtrujemy wyszukiwanie
mymodule(dir, ext, function(err, list){
if (err) {
throw err;
}
else {
list.forEach(function(el){
console.log(el);
}
)
}
});
console.log(JSON.stringify(mymodule.calc()));
A to moduł:
var fs = require('fs');
var path = require('path');
module.exports = function(dir, ext, callback) {
return {
calc: function() {
var buf = fs.readdir(dir, function (err, data) {
if (err) {
return callback(err); // early return
}
// ... no error, continue doing cool things with `data`
var list = [];
for (var i=0, len=dir.length; i<len; i++) {
if (path.extname(dir[i]).substring(1) == ext) {
list.push(dir[i]);
}
}
// all went well, call callback with `null` for the error argument
callback(null, list);
});
}
};
}
Jak wywołuję pierwszy plik to dostaję zwrotkę, że mymodule jest obiektem. Posiłkuję się dokumentacją
node gdzie jest podobny przykład dla modułu square. Po za tym jak dla mnie to wygląda to tak, że zwracana jest funkcja, która zwraca obiekt i całość jest eksportowana.