当 Hexo 部署遇到墙

💡 原文中文,约1100字,阅读约需3分钟。
📝

内容提要

文章说明Hexo部署时`hexo d`报错,核心原因是连接GitHub的443端口超时。作者起初排查后续报错无效,后定位为代理问题,并给出设置与取消HTTP/HTTPS代理的git config命令。

🔎

延伸解读

先看核心报错,别被后续信息带偏

文章里 `hexo d` 失败后输出了一长串报错,但作者指出真正关键的是 `unable to access` 和 `Failed to connect to github.com port 443: Timed out`。后续的 `Spawn failed` 等只是连带结果。排查时如果一直盯着后面的报错检索,容易试错方向。先锁定端口超时这一条,能更快缩小问题范围。

代理配置是这次问题的实际解法

作者最终通过 git 的代理设置解决:用 `git config --global http.proxy` 和 `https.proxy` 指向本地代理地址,需要取消时用 `--unset` 对应项。这说明 Hexo 部署本身未必有问题,而是 git 访问 GitHub 时走了不通的网络路径。遇到类似超时,可以先检查 git 是否配置了代理,以及代理地址是否可用。

手机全局代理不能替代本机 git 配置

文中提到作者试过手机全局翻墙等操作仍报错。这提示一个容易忽略的点:部署命令是在电脑上执行的,手机端的网络代理不会自动作用于电脑上的 git 进程。要让 `hexo d` 走代理,需要在执行部署的机器上为 git 配置代理,而不是只调整其他设备的网络环境。

❓

Q&A

hexo d 部署时出现 fatal: unable to access 'https://github.com/XXX/XXX.github.io.git/': Failed to connect to github.com port 443: Timed out 是什么原因?

核心原因是连接 GitHub 的 443 端口超时,通常是由于网络代理问题导致无法访问 GitHub。

如何解决 hexo d 部署时连接 GitHub 443 端口超时的问题?

可以通过设置 Git 的 HTTP 和 HTTPS 代理来解决,命令为:git config --global http.proxy http://127.0.0.1:xxxx 和 git config --global https.proxy https://127.0.0.1:xxxx(将 xxxx 替换为代理端口)。

设置代理后,如何取消 Git 的代理配置?

使用命令:git config --global --unset http.proxy 和 git config --global --unset https.proxy 即可取消代理设置。

hexo d 报错时,应该重点看哪部分错误信息?

应该重点关注 'unable to access' 和 'Failed to connect to github.com port 443: Timed out' 这两条核心错误,而不是后续的其他报错。

为什么手机全局翻墙后 hexo d 仍然报错?

因为 hexo d 是在本地电脑上执行 Git 操作,手机翻墙不影响电脑的网络环境,需要在本机设置 Git 代理才能解决。

设置 Git 代理时,127.0.0.1:xxxx 中的 xxxx 应该填什么?

xxxx 应替换为本地代理软件监听的端口号,例如常见的 7890 或 1080 等。

🏷️

标签

➡️

继续阅读