由一个hexo部署问题说起

最近有时间,终于重启了自己的在 GitHub Pages 上的博客,用 hexo 建立网站确实省心省力,然而我也遇到了一些问题,在此记录一下 hexo 部署时的小波折。
和往常一样,我依然使用 hexo clean
、hexo g
、hexo d
三个命令部署更新网站,然而在执行第三个命令时收到了这样一个错误提示:
1 | git@github.com: Permission denied (publickey). |
于是,非常自然地想到是不是 SSH 连接的问题,经过网上一番搜索,我首先在 C 盘 .ssh 文件夹目录下新建了一个名为 config 的文件,内容如下:
1 | Host github.com |
重新尝试部署,依然出错,错误提示一样。最好还是看官方文档,于是,我在 GitHub Docs上找到了这个页面,按照它里面的操作步骤一步步排查问题。可以发现,在执行
1 | ssh -vT git@github.com |
命令时,我的机器是可以连上 github.com 的,但其中,我本机的详情信息略有不同,最关键的两行信息如下:
1 | debug1: identity file /Users/you/.ssh/id_dsa type 0 |
结合官方给出的文档,我发现是由于缺失了 id_dsa-cert
文件所致,但去 .ssh 文件夹下,却没有发现这个文件。问题是,这个 SSH key 是我在前几天生成的新 key,为什么现在提示我会缺少这么一个文件呢?于是我大胆假设:hexo是不是版本太老,所需要的文件如今的系统是不会生成的。用 hexo -v
命令一看,居然是 1.x 版本!当初我建立博客还是在2018年,这么久过去了,我从未主动更新过 hexo,现在最新版本已到达 6.0.0,时代变了。
hexo 的运行依赖 npm,我想到自己的 Node 也不是新版本,于是去 Node.js 官网下载并覆盖安装最新的稳定版本,然后使用 node -v
查看版本更新是否成功。
接下来若是尝试运行 hexo 的任何指令,都会提示我无法找到该命令。不急不急,使用以下命令全局更新 hexo:
1 | npm i hexo-cli -g |
安装 npm-check:
1 | npm i npm-check -g |
然后再运行 npm-check
指令,这里就展示了需要升级的各种插件,可以发现 hexo 赫然在列。
再执行以下命令:
1 | npm install -g npm-upgrade // 安装npm-upgrade |
其中几乎每一步都花费了几分钟时间,的确,我系统中各种插件都长时间没有更新了。在执行第三条命令的时候,还出现了 “npm ERR! The operation was rejected by your operating system.” 的错误,在 Windows 10系统上,搜索并进入设置的“PowerShell开发者选项”,勾选并“应用”如下图所示的选项即可成功运行该命令。

终于更新完,来检验一下成果,运行 hexo -v
:
1 | hexo: 6.0.0 |
更新成功!最终新的文章也成功部署到了网站上。