Прежде всего извините за мой плохой английский 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» является просто заполнителем.