Leon’s Blog

Dreams don't work unless you do.

Hexo恢复运行问题记录

今天清理旧电脑文件时,眼睛不经意间扫到了尘封已久的博客文件夹,一种回归写作的冲动油然而生…

于是赶忙尝试运行一下,enm…果然运行不起来:

主要遇到的问题有:

1.更新配置文件格式: 随着hexo版本更新后配置文件的格式也进行了调整

1
2
3
4
5
6
7
8
9
10
11
12
13
# hexo3.22.0以下版本这样写没有问题
# 自动生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml

# hexo3.22.0以上版本,需要加空格
## 自动生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml

2.端口冲突:默认hexo是占用4000端口

1
Error: listen EADDRINUSE: address already in use错误

使用此命令杀死占用端口的进程:

1
2
sudo lsof -i: 4000
sudo kill -9 pid

或者可以通过此命令来修改hexo端口:

1
hexo server -p 5000   #更改端口

3.卸载、重装hexo:

1
2
3
4
5
6
#由于太久没有升级,依赖库也非常多,通过npm命令卸载同样会报错导致无法卸载
npm uninstall hexo-cli -g

#我这里直接通过物理目录删除的方式更直接,又省去了一番折腾时间...
cd `which hexo`/../../..
rm -rf ./hexo ./hexo-cli

4.升级主题库:随着一些依赖库的升级,旧的主题包也会出现各种无法显示的问题,因此也做了更新。

5.重新生成Github的SSH密钥:由于曾更新覆盖过本地密钥,因此又重新设置了一遍。

上述问题解决后终于是可以正常跑起来了,但是遇到的新问题是本地显示正常,一部署到外网环境就变成了空白页面。

经过一番搜索,发现空白页面的问题是由于node版本过高,hexo版本过低产生,两种解决方案:

  • 升级hexo:过程会很曲折…有时间折腾的可以采用这种方案
  • 降级node(推荐):相对会比较顺利

6.降级node:通过 nvm 工具来实现node版本的切换,避免造成依赖当前版node的代码无法执行。

6-1:使用以下脚本安装(不通过brew安装是因为有bug):

1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

6-2:接着执行:

1
2
cd ~/.nvm
sudo ./install.sh

6-3:安装结束后,重新打开 terminal 执行 nvm --version , 若显示版本号说明安装成功了。

6-4: 用 nvm 降级 node 到 12.14.0

1
2
3
4
5
# 临时降级,只在当前terminal生效,若打开新的terminal仍旧是之前的版本
nvm install 12.14.0
nvm use 12.14.0
# 若是全局降级,可以使用此命令
nvm alias default 12.14.0

至此再重新部署就可以看到页面了

1
2
3
hexo -clean
hexo -g
hexo -d

参考:https://zhuanlan.zhihu.com/p/491881992?utm_id=0