Я новичок в node.js и пытаюсь получить файлы с FTP с помощью ftp module , а затем я хочу показать путь к папке с файлами в консоли. Когда я запускаю сервер с npm start, я получаю все файлы (это хорошо), но консоль возвращает пустой массив. Если я снова запускаю сервер с npm start, консоль показывает все пути (отлично), но не для новых файлов. Я пытался решить мою проблему с обратными вызовами и setTimeout безрезультатно: C
var Client = require('ftp');
var c = new Client();
var path = require('path');
var fs = require('fs');
var dir = path.join(__dirname, '../excelTime/');
var files = fs.readdirSync(dir);
const connectionProperties = {
host: 'localhost',
user: 'user_geek',
port: '21'
}
Получить файлы с ftp
const getFilesFromFTP = () => {
c.on('ready', function() {
c.list('./', function(err, list) {
if (err) throw err;
for(var i = 0; i < list.length; i++) {
(function(i) {
const name = list[i].name;
c.get('/' + name, function(err, stream) {
if (err) console.dir(err);
if(!err) {
stream.once('close', function() { c.end(); });
stream.pipe(fs.createWriteStream('./excelTime/' + name, {flags: 'w'}));
}
});
}).call(this, i);
}
c.end();
});
});
c.on('error', function(err) {
console.log(err)
});
c.connect(connectionProperties);
}
Получить Путь к файлу
const checkFolder = () => {
let promises = files.map(file => path.join(dir, file));
Promise.all(promises).then(console.log);
}
Вызов
setTimeout(function() {
checkFolder();
}, 3000);
getFilesFromFTP();