发布于 

Hexo+GithubPages 404

简介

继上次 2018,我又来了 中说 Hexo 数据丢失已有几个年头了,手中的那台笔记本见证了我头发稀疏的过程,它已经到了退休的年龄,运行速度已经无法匹配我的手速了。于是我省吃俭用换了一台电脑。我最先迁移的就是 Hexo,因为它太简单好用了实在是爱不释手。万万没想到一个 404 折腾了我几天几夜,几乎让我崩溃,还好最终解决了,不然我真的要去住院治疗了。

诸多方案

或许使用 Hexo 搭建个人网站的朋友见过下面这张图

出现这种 404 有如下几种情况,不知道你是哪一种,听我一一道来。

1、github 仓库名称不匹配

我们都知道,想要部署自己的 github.io,需要在 github 上面创建仓库。

在 github 上面创建的仓库名称没有使用自己的 github 账号名称,例如你的 github 账号名称是 zhanghao,而你创建的仓库名称是 suibian.github.io,这样你确实是无法访问你的博客网站的。

2、配置文件错误

在你的本地博客目录下(我创建的名称是 hexo,注意不是 themes 主题目录下的那个配置文件),有个配置文件 _config.yml,里面内容是这样的:

1
2
3
4
# Deployment
## Docs: https://hexo.io/docs/deployment.html
#deploy: git@github.com:zhanghao/zhanghao.github.io.git
#type: git

需要修改一下

1
2
3
4
5
deploy:
type: git
repo: git@github.com:zhanghao/zhanghao.github.io.git
#branch: [master]
#message: [message]

特别要注意 repogit 后面要有空格

3、分支错误

现在在 github 上面创建 repo,默认分支名称是 main 而不是 master

所以,你本地 Hexo 提交(hexo d 命令)的默认是去了 master 分支,这样访问也是没有内容的。可以在 github 上面把你的 zhanghao.github.io 仓库默认分支改为 master,当然还可以修改 Hexo 的配置来改变分支为 main,我没有试过就不误人子弟了。

4、hexo 依赖不全

我在 hexo 目录下,检查了一下,发现该安装的插件已经很齐全了,毕竟我是把 package.json 复制过来的,一个 npm install 妥妥完事。

检查依赖安装是否有不全的情况,可以使用 npm list 命令

1
npm list --depth 0

如果检查有问题,会在控制台提示类似 npm ERR! missing xxxxx

5、域名解析错误

或许你配置了自己的域名,在阿里云或者腾讯云上面购买了自己的域名也配置了对应的 DNS 解析,但就是 404,你说气人不?!

关于在云上配置 CNAME,我就不多讲了,这里一定要在配置的时候检查一下你的 zhanghao.github.io IP,然后再去配置 A 记录。

1
2
3
4
5
ping zhanghao.github.io

PING veryitman.github.io (185.199.108.153): 56 data bytes
64 bytes from 185.199.108.153: icmp_seq=0 ttl=43 time=78.002 ms
64 bytes from 185.199.108.153: icmp_seq=1 ttl=43 time=119.590 ms

其中,185.199.108.153 就是 github.io 的 IP。

6、仓库中 CNAME 为空

这种错误,可以在 source 目录下创建一个 CNAME 文件,填写你的域名即可。

1
2
3
4
5
cd hexo/source 

touch CNAME

vim CNAME

例如我的 CNAME 文件内容是

1
zhanghao.com

保存完成后,执行

1
2
3
hexo clean
hexo g
hexo d

我的问题

很遗憾的告诉你,我遇到的问题上面 6 种情况都不是。

而是我的 node 版本太高了(17.x),我用的 hexo 版本是 4.2.1

官方给出了对应的兼容版本要求,如下表所示:

Hexo 版本 最低兼容 Node.js 版本
6.0+ 12.13.0
5.0+ 10.13.0
4.1 - 4.2 8.10
4.0 8.6
3.3 - 3.9 6.9
3.2 - 3.3 0.12
3.0 - 3.1 0.10 or iojs
0.0.1 - 2.8 0.10

后面我卸载了 node,重新安装了 node 12,一顿操作。

1
2
3
4
5
6
7
brew install node@12

hexo clean

hexo g

hexo d

再次打开自己的网站,一切都正常了,喜出望外。

当你痴迷一件事情的时候,连做梦都会帮你思考解决方案。


老天的事儿管不了,把自己的事情做好就好。


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

veryitman