events.js174 // необработанное событие error (ошибка: connect ECONNREFUSED 127.0.0.1:21) при подключении к FTP - PullRequest
0 голосов
/ 26 июня 2019

У меня есть 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);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...