尝试上传到Wolkenkit Blob Server时出现“ECONNREFUSED”错误

时间:2018-03-14 08:37:51

标签: post server request blob wolkenkit

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

您链接的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://local.wolkenkit.io:3001/替换为https://<...>-depot-file.wolkenkit.io:3001/

修复端口

其次,端口是错误的。这是因为blob存储服务是internally running on port 3000, externally on 3001。因此,您需要使用https://<...>-depot-file.wolkenkit.io:3001/而不是https://<...>-depot-file.wolkenkit.io:3000/

完成此操作后,您不应再遇到ECONNREFUSED之类的错误,因为现在可以找到该服务。

修复SSL问题

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

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

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

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

PS:我是wolkenkit的作者之一。非常感谢您提出这个问题,我们将来会处理这个问题,以便更轻松地存储blob。