Ошибка загрузки файла в easy-ftp с приложением Electron & Node.js - PullRequest
1 голос
/ 23 апреля 2019

Я пытаюсь загрузить CSV-файлы в удаленный ftp, используя пакет easy-ftp , но иногда загружаю и иногда показываю ошибку, как показано ниже:

enter image description here

вот мой код

let ftp = new EasyFtp();
try{
    const config = {
        host: 'ftp.saba.com',
        port: 21,
        username: 'username',
        password: 'password',
        type : 'ftp'
    };
    ftp.connect(config);
    ftp.upload(csvName, "/csvs/", function (err) {
        try {
            fs.unlink(csvName, (err) => {
                if (err) {
                    console.log(err);
                    return;
                }
            });
        } catch(error) {
            console.log(error);
        }
    });
} catch(error) {
    console.log(error);
}

Я не могу найти никаких полезных ресурсов для решения этой проблемы, что мне теперь делать?

Спасибо

1 Ответ

1 голос
/ 24 апреля 2019

Это асинхронная проблема.Вам необходимо загрузить файл после успешного подключения.

Код должен быть:

ftp.on('open', function(){
  ftp.upload(csvName, "/csvs/", function (err) {
    // process upload result
  });
});

ftp.connect(config);

В вашем коде запрос upload отправляется сразу после операции connect.Если повезет, когда easy-ftp попытается выполнить операцию upload, предыдущий connect уже завершен и успешен, тогда upload также будет успешным.

Если не повезет, при попытке easy-ftpдля выполнения операции upload предыдущий connect еще не завершен.Тогда upload завершится ошибкой и выдаст ошибку «Cannot read property ...» (похоже, что easy-ftp должен отображать более качественное сообщение об ошибке).

Для решения проблемы необходимо прослушать «open» событие в easy-ftp, и загружать файлы только тогда, когда это событие было отправлено:

open ( клиент) - отправляется, когда соединение и аутентификация были успешными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...