【问题标题】:Getting "ECONNREFUSED" error when trying to upload to Wolkenkit Blob Server尝试上传到 Wolkenkit Blob 服务器时出现“ECONNREFUSED”错误
【发布时间】:2018-08-22 16:51:43
【问题描述】:

我目前正在开发一个在我的本地机器上运行的 Wolkenkit 应用程序。 我想将 Wolkenkit 应用程序中的文件上传到 blob 服务器(如文档中的 here 所述)。

从服务器向https://local.wolkenkit.io:3001/ 发送 POST 请求时,Node.js 给了我错误ECONNREFUSED

我已经用另一个程序测试了 POST-Request,它在那里工作。知道为什么它不能从 wolkenkit 应用程序本身工作吗?

谢谢!

【问题讨论】:

  • 您可以将netstat -tln (linux) 或netstat -a -b -n (windows) 的输出添加到您的帖子中吗?这将告诉您是否有应用程序正在监听 :3001

标签: post server request blob wolkenkit


【解决方案1】:

您链接到的Storing files 示例显示了要在浏览器中运行的代码,而不是在后端本身中运行的代码。当然,两者都应该有效,但您需要注意一些细微差别。

修复主机名

首先,我假设您的情况下的 local.wolkenkit.io 映射到 127.0.0.1,这是 wolkenkit 的默认值。这意味着当您尝试从 Docker 容器内连接到此域时,该容器不会尝试调用博客存储容器,而是保留在其自身内。所以,首先需要修复的是主机名。

基本上,有两种选择:您可以设置local.wolkenkit.io,使其解析为您机器的外部IP 地址。这会起作用,但非常麻烦。另一种选择是通过其内部名称直接寻址负责 blob 存储的适当容器。 internal name<name-of-your-app>-depot-file。所以你需要用https://<...>-depot-file.wolkenkit.io:3001/替换https://local.wolkenkit.io:3001/

修复端口

第二,端口错误。这是因为 Blob 存储服务是 internally running on port 3000, externally on 3001。所以你需要使用https://<...>-depot-file.wolkenkit.io:3000/,而不是https://<...>-depot-file.wolkenkit.io:3001/

完成此操作后,您应该不会再收到像 ECONNREFUSED 这样的错误,因为现在可以找到该服务。

修复 SSL 问题

第三,由于您现在使用不同的域名连接到 blob 存储服务,因此 SSL 证书不再匹配,因为它是为 local.wolkenkit.io 颁发的。因此,您在尝试连接时会收到 SSL 错误。

解决此问题的最简单方法是禁用任何 SSL 检查(尽管这也是处理此问题的最不安全的方法!)。如何执行此操作取决于您使用的 HTTP 客户端模块。例如,在request 中有一个名为strictSSL 的选项,您可以将其设置为false

当然,您实际上应该做的是要么使用包含此域名的自定义证书,要么编写一个处理证书检查并接受提供的证书的函数,尤其是在这种情况下。

如果你做了所有这些,事情应该会奏效:-)

PS:我是 wolkenkit 的作者之一。非常感谢您提出这个问题,我们将在未来解决这个问题,以使存储 blob 更容易。

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多