【问题标题】:connect ECONNREFUSED 127.0.0.1:21 error in node js在节点 js 中连接 ECONNREFUSED 127.0.0.1:21 错误
【发布时间】:2017-04-11 12:10:39
【问题描述】:

我正在用 node js 编写一个简单的应用程序,我遇到了这个问题:

Error: connect ECONNREFUSED 127.0.0.1:21
    at Object.exports._errnoException (util.js:1034:11)
    at exports._exceptionWithHostPort (util.js:1057:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1099:14)

这是脚本:

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


  var c = new Client();
  c.on('ready', function() {
    c.get('/foo/foo1.txt', function(err, stream) {
      if (err) throw err;
      stream.once('close', function() { c.end(); });
      stream.pipe(fs.createWriteStream('foo.local-copy.txt'));
    });
  });
  c.connect('MYIP',21,false,'none','user','password',10000,10000,10000);

  c.end();

怎么了?

【问题讨论】:

  • 你有 FTP 服务器监听 21 端口吗?您是否在此服务器中为此凭据设置了适当的权限?
  • 没有必要为不安全的 FTP 协议打开端口 21,而且这样做实际上是个坏主意,因为所有数据都是通过 FTP 未加密传输的。 macOS 内置了 SSH 支持,它使用端口 22,可以在系统偏好设置 > 共享 > 远程登录中打开。启用此服务后,任何现代 FTP 客户端都可以使用更安全的 SFTP 协议连接到端口 22。

标签: javascript node.js ftp


【解决方案1】:

它说与端口 21 的连接被拒绝。

最可能的原因是您没有运行正在侦听该端口的 FTP 服务器。

您也可能已将其关闭(尽管在环回接口上不太可能)。

【讨论】:

  • 不是防火墙问题。
  • @OiRc — 我说这种可能性不大。
【解决方案2】:

文档说在连接参数中使用对象。

试试这个:

var Client = require('ftp');
var fs = require('fs');
var c = new Client();
c.on('ready', function() {
    c.list(function(err, list) {
        if (err) throw err;
        console.dir(list);
        c.end();
    });
    c.put('foo.txt', 'foo.remote-tesssstt.txt', function(err) {
        if (err) throw err;
        c.end();
    });
});
// connect to localhost:21 as anonymous
c.connect({
    host: 'your_host', // ex: files.000webhost.com
    port: 21,
    user: 'your_user',
    password: 'your_password',
    secure: false,
    secureOptions: 'none',
    connTimeout: 10000,
    pasvTimeout: 10000,
    aliveTimeout: 10000
});

【讨论】:

    猜你喜欢
    • 2021-07-19
    • 2020-04-14
    • 2019-03-15
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2022-12-10
    • 2016-10-27
    相关资源
    最近更新 更多