尝试上传到 Wolkenkit Blob 服务器时出现"ECONNREFUSED"错误



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

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

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

谢谢!

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

修复主机名

首先,我想local.wolkenkit.io在您的案例中映射到127.0.0.1,这是 wolkenkit 的默认值。这意味着,当您尝试从 Docker 容器内连接到此域时,容器不会尝试调用博客存储容器,而是保留在自身内部。因此,需要修复的第一件事是主机名。

基本上,有两种选择: 您可以设置local.wolkenkit.io,以便它解析为计算机的外部 IP 地址。这将起作用,但非常麻烦。另一个选项是按内部名称直接寻址负责 Blob 存储的相应容器。内部名称为<name-of-your-app>-depot-file。所以你需要用https://<...>-depot-file.wolkenkit.io:3001/替换https://local.wolkenkit.io:3001/.

修复端口

其次,端口错误。这是因为 Blob 存储服务在内部在端口 3000 上运行,在外部在 3001 上运行。因此,您需要使用https://<...>-depot-file.wolkenkit.io:3000/而不是https://<...>-depot-file.wolkenkit.io:3001/

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

修复 SSL 问题

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

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

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

如果你做所有这些,事情应该会起作用:-)

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

最新更新