Hexo 博客配置和使用中遇到的问题记录

Hexo 博客配置和使用中遇到的问题记录

再次换了电脑,重建了博客部署文件,搬迁了好看的新主题,记录一下暂时遇到的一些问题和解决方案。

问题一:hexo 3.0后deploy模块独立

在hexo 3.0之前,deploy模式为github,填写仓库的地址即可。在升级hexo 3.0之后,需要安装hexo-deployer-git独立模块,npm install hexo-deployer-git --save。然后修改根目录下的_config.yml中的deploy部分为git模式,并修改https的仓库地址为ssh形式。

1
2
3
4
deploy:
type: git
repository: [email protected]:greedbob/greedbob.github.io.git
branch: master

问题二:github被墙后的ssh提交问题

这在一定程度上与上一个问题相关,第一次遇到这个问题就是上一次迁移博客到新电脑时候遇到的,由ssh提交之后,需要处理github网络很差或者被墙的时候的博客部署问题。
个人体验,相比于http和https代理,ssh代理好麻烦。我当时的解决方法是在github一众ip中ping出了一个通的,写了hosts。
之后才知道叶子以及踩过坑,利用connect代理ssh到sock5。

Reference: https://yukino.nl/2019/10/02/ssh-proxy-connect/


问题三:博客多设备维护

最初在笔记本上生成静态文件,之后迁移到学校台式机。最近不在学校,发现需要将hexo和主题文件也进行版本控制,以实现多设备的博客维护。

  • 多分支
    • hexo生成的静态博客文件放在master分支上
    • hexo的部署环境文件放在hexo分支上
  • 上传文件
    • git clone -d hexo克隆hexo分支,并将部署文件复制进来
    • 提交之前删掉主题中的.git文件夹(之后更新需要覆盖更新)
    • git push

Reference: https://www.jianshu.com/p/0558c041e56d


问题四:使用hexo-douban时的问题

yliya迁移到icarus之后hexo-douban插件无法正常生成界面。报错为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
INFO  Checking dependencies
INFO Validating the configuration file
INFO Start processing
INFO 695 movies have been loaded in 71781 ms
Unhandled rejection TypeError: D:\Code\greedbob.github.io\themes\icarus\layout\page.ejs:1
>> 1| <%- _partial('common/article', {post: page, index: false}) %>

D:\Code\greedbob.github.io\themes\icarus\layout\common\article.ejs:27
25| <% if (!has_config('article.readtime') || get_config('article.readtime') === true) { %>
26| <span class="level-item has-text-grey">
>> 27| <% const words = word_count(post._content); %>
28| <% const time = duration((words / 150.0) * 60, 'seconds') %>
29| <%= `${ time.locale(get_config('language', 'en')).humanize() } ${ __('article.read')} (${ __('article.about') } ${ words } ${ __('article.words') })` %>
30| </span>

Cannot read property 'replace' of undefined
at Object.<anonymous> (D:\Code\greedbob.github.io\themes\icarus\includes\helpers\site.js:60:27)
at eval (D:\Code\greedbob.github.io\themes\icarus\layout\common\article.ejs:57:22)
at article (D:\Code\greedbob.github.io\node_modules\ejs\lib\ejs.js:682:17)
at viewFn._compiledSync (D:\Code\greedbob.github.io\node_modules\hexo\lib\theme\view.js:132:22)
at viewFn.View.renderSync (D:\Code\greedbob.github.io\node_modules\hexo\lib\theme\view.js:60:23)
at Object.partial (D:\Code\greedbob.github.io\node_modules\hexo\lib\plugins\helper\partial.js:34:15)
at Object.<anonymous> (D:\Code\greedbob.github.io\themes\icarus\includes\helpers\override.js:190:42)
at eval (D:\Code\greedbob.github.io\themes\icarus\layout\page.ejs:8:17)
at page (D:\Code\greedbob.github.io\node_modules\ejs\lib\ejs.js:682:17)
at viewFn._compiled (D:\Code\greedbob.github.io\node_modules\hexo\lib\theme\view.js:136:48)

我完全不懂ejs,硬着头皮看了报错和相应代码之后,发现时在主题提供的字数统计以计算阅读时间的时候,内容为空造成的。
最简单的解决办法是在hexo douban的时候关掉字数统计功能,在生成之后,生成文章之前再打开此功能。

1
2
article:
readtime: false

当然查到一些别的主题遇到类似的问题的时候,hexo-douban插件的作者推荐在报错的ejs文件中加入判空语句解决。

Reference: https://github.com/mythsman/hexo-douban/issues/46

问题五:字体cdn

发现访问博客速度非常慢,ctrl+F12发现是因为通过谷歌字体api加载字体太缓慢,因此需要换字体cdn。
查阅主题作者的博客,有详细的cdn格式解释:

For font CDN, you can pass in the URL of a Google Font mirror or compatible webfont CDN. Icarus depends on the Ubuntu and Source Code Pro fonts, so make sure your CDN provides those. The URL should have two placeholders for font type (icon or font) and font name:
https://some.google.font.mirror/${type}?family=${fontname}

我选择了loli.net作为字体cdn,在字体_config.yml的字体cdn处填写https://some.google.font.mirror/${type}?family=${fontname}即可。

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×