У меня есть FTP-сайт, где файлы обновляются два раза в день, я не знаю, когда эти файлы обновляются. Я попытался создать скрипт узла, который проверяет, изменились ли файлы. Я получаю ошибку однако. Который ниже.
events.js:174
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED 127.0.0.1:21
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1097:14)
Emitted 'error' event at:
at Socket.onerror (/Users/pb/Developer/ftp-crawler/node_modules/ftp/lib/connection.js:280:10)
at Socket.emit (events.js:189:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
Это все еще в процессе ... Я просто хотел бы понять, почему я не могу подключиться. Я использую правильные кредиты в объекте config
.
Я считаю, что мне может быть отказано в соединении через FTP, но я не уверен, где или как обработать это событие ошибки ...
После подключения я хотел бы проверить наличие файлов и проверить разницу в размерах. Любой файл, размер которого больше по размеру, должен быть загружен.
Это мой код
const Client = require('ftp');
const fs = require('fs');
const inquirer = require('inquirer');
const c = new Client();
// get user name and password from user input.
const questions = [
{
type: 'input',
name: 'un',
message: 'Please enter your username:',
validate: function(value) {
if (value.length) {
return true;
} else {
return 'Please enter your username!';
}
}
},
{
type: 'password',
name: 'pw',
message: 'Please enter your password:',
validate: function(value) {
if (value.length) {
return true;
} else {
return 'Please enter your password!';
}
}
}
];
inquirer
.prompt(questions)
.then(answers => {
// create a config object storing users inputted answers
const config = {
user: answers.un,
password: answers.pw
};
config.host = `ftp://${config.user}:${
config.password
}_domainFtp@ftp.domain.com`;
console.log(JSON.stringify(config.host));
// connect to FTP
c.connect(config.host);
// check location for new files uploaded by date
c.on('ready', function() {
console.log('ready');
const files = [];
// get a directory listing of currrent working directory.
// and append to files array so we can loop through to check sizes.
c.list(function(error, list) {
if (error) throw error;
list.append(files);
console.log(files);
});
// loop through files array to check file size change
for (let i = 0; i < files.length; i++) {
const stats = fs.statSync(files[i]);
const fileSize = stats.size;
if (fileSize > fileSize) {
// if file size differs download remote file and save it to the local file system:
c.get(files[i], function(error, stream) {
if (error) throw error;
stream.once('close', function() {
c.end();
});
stream.pipe(fs.createWriteStream(files[i]));
});
}
}
});
})
.catch(error => {
console.log(error);
});