Почему все пакеты ftp npm некорректно работают в приложении electronic angular? - PullRequest
0 голосов
/ 18 июня 2020

Прежде всего извините за мой плохой английский sh, потому что я из Германии

Для общей информации:
Я использую:
- версия узла 12.14.0
- npm версия 6.13.4
- электронная версия 8.2.5
- angular версия 9.1.4

Я создал приложение Electron Angular из этого шаблона и добавил кнопку, чтобы при нажатии кнопки скрипт пытался отправить файлы на ftp через пакет npm ftp. Проблема в том, что ни один из пакетов не работает должным образом.

Пакеты, которые я пробовал:
- ftp
- ftp-client
- basi c -ftp

Проблема, с которой я столкнулся с ftp :
, когда я использую этот пакет, я должен нажать кнопку как минимум дважды, чтобы он подключился и загрузил файл. Он должен загрузить файл немедленно, но этого не происходит. Я проверил несколько вещей и обнаружил, что время ожидания истекает через 10 секунд. Но проблема не в этом. Проблема в том, что он никогда не подключается с первой попытки. Я тестировал его как минимум 30 раз, и он всегда выходит из строя с первой попытки.

Проблема, с которой я столкнулся с basi c -ftp :
Проблема заключалась в том, что он подключается напрямую при первом пытается, но подключение к ftp занимает около 10 секунд, а затем загружает файл еще через 10 секунд или даже дольше. И просто иногда срабатывает с первой попытки. Иногда мне нужно нажать кнопку 5-10 раз, чтобы файл загрузился. Если вы следуете примеру кода, он выводит много сообщений на консоль. Но в журнале, похоже, нет никаких ошибок или чего-то еще, go он просто не вздремнул, а затем снова проснулся.

Проблема, с которой я столкнулся с ftp-client :
Здесь проблема действительно несложная: она просто не работает. Иногда появляется сообщение «Ошибка: истекло время ожидания контрольного соединения». после того, как я нажал кнопку 5-8 раз, а иногда она просто не работает.

В каждом случае я использовал пример кода из каждого репозитория, но только для справки, вот коды, которые я использовал для разных npm пакетов:

ftp:

 var Client = require('ftp');
  var fs = require('fs');

  var c = new Client();
  c.on('ready', function() {
    c.put('C:/test/test.txt', 'test.txt', function(err) {
      if (err) throw err;
      c.end();
    });
  });
  // connect to localhost:21 as anonymous
  c.connect({host: "local.host.com", username: "username", password: "**********"});



ftp-client:

const config = {
  host: 'local.host.com',
  port: 21,
  user: 'username',
  password: '*******'
}

var ftpClient = require('ftp-client');
var client = new ftpClient(config, {});
client.connect(function() {
      client.upload(["C:/test/test.txt"], './', {
        baseDir: 'test',
        overwrite: 'all'
      }, function(result) {
        console.log(result);
      })
    })



basi c -ftp

const ftp = require("basic-ftp")

async function example() {
    const client = new ftp.Client()
    client.ftp.verbose = true
    try {
        await client.access({
            host: "local.host.com",
            user: "username",
            password: "***********",
            secure: true
        })
        console.log(await client.list())
        await client.uploadFrom("C:/test/test.txt", "test.txt")
    }
    catch(err) {
        console.log(err)
    }
    client.close()
}



Я действительно надеюсь, что кто-нибудь может мне помочь. Я действительно не знаю, в чем ошибка. Я также не загружал действительно большой файл, это был просто .txt с "Hello World" в нем. Как вы уже догадались, test.txt находится в «C: / test / test.txt», а домен «local.host.com» является просто заполнителем.

1 Ответ

0 голосов
/ 21 июля 2020

Это сработает, возможно, путь был установлен неправильно.

const config = {
  host: 'local.host.com',
  port: 21,
  user: 'username',
  password: '*******'
}

var ftpClient = require('ftp-client');
var client = new ftpClient(config, {});
client.connect(function() {
var srcloc="./test.txt";
var destloc="./";
      client.upload(srcloc,destloc,{
        baseDir: 'test',
        overwrite: 'older'
      }, function(result) {
        console.log(result);
      })
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...