【问题标题】:Why is every ftp npm package not working correctly in electron angular app?为什么每个 ftp npm 包都不能在电子角度应用程序中正常工作?
【发布时间】:2020-10-08 22:56:56
【问题描述】:

首先很抱歉我的英语不好,因为我来自德国

一般信息:
我正在使用:
- 节点版本 12.14.0
- npm 版本 6.13.4
- 电子版 8.2.5
- 角度版本 9.1.4

我从template 生成了一个 Electron Angular 应用程序,并添加了一个按钮,以便当我单击该按钮时,脚本会尝试通过 npm ftp 包将文件发送到 ftp。问题是没有一个包能正常工作。

我尝试过的包:
- ftp
- ftp-client
- basic-ftp

我遇到的问题 ftp
当我使用这个包时,我必须至少点击两次按钮,以便它连接并上传文件。它应该立即上传文件,但它没有。我测试了一些东西,发现它是因为它在 10 秒后超时。但这不是问题。问题是它永远不会在第一次尝试时连接。我已经对其进行了至少 30 次测试,但它总是在第一次尝试时超时。

我遇到的问题 basic-ftp
这里的问题是它在第一次尝试时直接连接,但连接到 ftp 需要大约 10 秒,然后再过 10 秒或更长的时间上传文件。而且它有时只在第一次尝试时起作用。有时我必须点击按钮 5-10 次才能上传文件。如果您遵循示例代码,它会在控制台中记录很多信息。但是日志似乎没有任何错误,或者它只是没有像打盹然后再次醒来一样。

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客户端:

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);
      })
    })



基础-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”只是一个占位符。

【问题讨论】:

    标签: node.js angular npm ftp electron


    【解决方案1】:

    这会起作用,可能路径设置不正确。

    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);
          })
        })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 2020-09-19
      • 2018-02-11
      • 2023-02-14
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多