Я бы создал новый отдельный модуль с функцией, содержащей обратный вызов, который я вызываю в основном файле.
Моя программа должна принимать 3 аргумента : сначала каталог с файлом, затем расширение файла и, наконец, функция обратного вызова, которая должна фильтровать каталог по расширению файла.
Вот мой файл module.js
var fs = require('fs')
module.exports = function (directory, fileExtension, callbackfun) {
fs.readdir(directory, callbackfun);
}
затем в основном файле я импортирую модуль, затем использую функцию.
modulejs(process.argv[2], process.argv[3], callbackfun(callbackfn));
var callbackfn = function (err, data, fileExtension) {
console.log(fileExtension);
let filtred = data.filter(file => { if (file.indexOf("." + fileExtension) > -1) { console.log(file); } });
};
function callbackfun(callbackfunc1) {
callbackfunc1(err, data, fileExtension);
}
Ошибка, которую я получаю на самом деле
ReferenceError: err is not defined
ОБНОВЛЕНИЕ : я отредактировал свой код, теперь я получаю другую ошибку
UPDATE2 : Я получаю решение в Интернете, но не понимаю, как оно работает, если кто-нибудь объяснит мне его шаг за шагом, было бы неплохо
module.jsconst fs = require('fs')
const path = require('path')
module.exports = function (dir, filterStr, callback) {
fs.readdir(dir, function (err, list) {
if (err) {
return callback(err)
}
list = list.filter(function (file) {
return path.extname(file) === '.' + filterStr
})
callback(null, list)
})
}
main.js
const filterFn = require('./module.js')
const dir = process.argv[2]
const filterStr = process.argv[3]
filterFn(dir, filterStr, function (err, list) {
console.log(list);
if (err) {
return console.error('There was an error:', err)
}
list.forEach(function (file) {
console.log(file)
})
})