尝试上传到 Wolkenkit Blob 服务器时出现 "ECONNREFUSED" 错误
Getting "ECONNREFUSED" error when trying to upload to Wolkenkit Blob Server
我目前正在 运行 我的本地机器上开发一个 Wolkenkit 应用程序。
我想将文件从 Wolkenkit 应用程序上传到 blob 服务器(如记录 here)。
当从服务器向 https://local.wolkenkit.io:3001/
发送 POST 请求时,Node.js 给出错误 ECONNREFUSED
。
我用另一个程序测试了 POST-Request,它在那里工作。知道为什么 wolkenkit 应用程序本身不起作用吗?
谢谢!
您链接到的 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:3000/
.
而不是 https://<...>-depot-file.wolkenkit.io:3001/
完成此操作后,您应该不会再收到类似 ECONNREFUSED
的任何错误,因为现在可以找到该服务。
修复 SSL 问题
第三,由于您现在使用不同的域名连接到 blob 存储服务,因此 SSL 证书不再匹配,因为它是为 local.wolkenkit.io
颁发的。因此,您将在尝试连接时遇到 SSL 错误。
解决此问题的最简单方法是禁用任何 SSL 检查(尽管这也是处理此问题的最不安全方法!)。如何执行此操作取决于您使用的 HTTP 客户端模块。例如,在 request 中有一个名为 strictSSL
的选项,您可以将其设置为 false
.
当然,您实际上应该做的是要么使用也包含该域名的自定义证书,要么编写一个函数来处理证书检查和接受呈现的那个,尤其是在这种情况下。
如果你做了所有这些,事情应该会成功:-)
PS:我是wolkenkit的作者之一。非常感谢您提出这个问题,我们会在未来处理这个问题,让存储 blob 更容易。
我目前正在 运行 我的本地机器上开发一个 Wolkenkit 应用程序。 我想将文件从 Wolkenkit 应用程序上传到 blob 服务器(如记录 here)。
当从服务器向 https://local.wolkenkit.io:3001/
发送 POST 请求时,Node.js 给出错误 ECONNREFUSED
。
我用另一个程序测试了 POST-Request,它在那里工作。知道为什么 wolkenkit 应用程序本身不起作用吗?
谢谢!
您链接到的 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:3000/
.
https://<...>-depot-file.wolkenkit.io:3001/
完成此操作后,您应该不会再收到类似 ECONNREFUSED
的任何错误,因为现在可以找到该服务。
修复 SSL 问题
第三,由于您现在使用不同的域名连接到 blob 存储服务,因此 SSL 证书不再匹配,因为它是为 local.wolkenkit.io
颁发的。因此,您将在尝试连接时遇到 SSL 错误。
解决此问题的最简单方法是禁用任何 SSL 检查(尽管这也是处理此问题的最不安全方法!)。如何执行此操作取决于您使用的 HTTP 客户端模块。例如,在 request 中有一个名为 strictSSL
的选项,您可以将其设置为 false
.
当然,您实际上应该做的是要么使用也包含该域名的自定义证书,要么编写一个函数来处理证书检查和接受呈现的那个,尤其是在这种情况下。
如果你做了所有这些,事情应该会成功:-)
PS:我是wolkenkit的作者之一。非常感谢您提出这个问题,我们会在未来处理这个问题,让存储 blob 更容易。