【问题标题】:jsftp - TypeError: createConnection is not a functionjsftp - TypeError:createConnection 不是函数
【发布时间】:2019-01-10 15:01:18
【问题描述】:

我刚刚使用client-ftp 发布了一个最近的问题,并被告知包已过时并且是我最初问题的根源。正如建议的那样,我转移到了一个仍在维护的包,即jsftp。但是,我仍然有类似的问题。作为参考,我之前的问题可以找到here。我仍然会重申我的问题,因为它已经略有变化。

我是 Angular/Node 新手,正在尝试连接到 ftp 服务器。

我正在前端创建一个按钮,如下所示: <button class="btn btn-primary" (click)="downloadFile()"><i class="fa fa-file-photo-o"></i> Download Screenshot</button>

我要下载的新实现是这样的:

downloadFile(){
    console.log('Connecting to sftp...');
    var jsftp = require("jsftp");

    var ftp = new jsftp({
        host: 'localhost',
        port: 22,
        user: 'anonymous',
        pass: 'anonymous'
    });

    console.log('Downloading Screenshot...');
}

我意识到我并没有尝试下载任何内容,但目前我只是尝试先连接。问题是当点击事件被触发时,我收到一个错误消息TypeError: createConnection is not a function。我不知道我做错了什么。 createConnection 函数没有在任何地方被调用。我正在做文档所说的事情,其他资源似乎表明相同,例如here

节点版本是:v8.11.3 - 可能太过时了?

【问题讨论】:

  • 浏览一些类似github.com/browserify/browserify/issues/1780的帖子我猜基于JS的FTP客户端不应该在浏览器中运行。您必须建立自己的服务器并在那里实现客户端。只有这样,您才能访问浏览器无法访问的 Net 模块并导致您提到的错误。这似乎是一个普遍问题。

标签: node.js angular function typescript sftp


【解决方案1】:

您标记了 typescript,大概是因为 TypeError,这是一个 javascript,而不是 typescript,错误(请参阅 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Not_a_function)。

其次,您似乎对 NodeJS 上的 JavaScript(后端)和浏览器中的 JavaScript(前端)感到困惑。你不能在浏览器中运行jsftp,所以你的方法需要改变。

如果您的目的是让用户在单击链接时从浏览器下载 ftp 文件,您应该能够直接在 href 中链接到该文件,而无需任何 javascript。请查看此问题的答案以获取更多信息:Is it possible to download file from FTP using Javascript?

【讨论】:

  • 这样在前端添加指向 ftp 的链接不会有潜在的安全风险吗?
  • 这取决于。如果 FTP 服务器允许匿名下载,那么您就没有任何风险。另一方面,直接在链接中提供用户名和密码很可能是一个非常糟糕的主意。如果 FTP 服务器安全的,但您仍然需要允许下载,那么您将需要一个更复杂的设置,包括在服务器上代理请求。
猜你喜欢
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 2019-12-20
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多