使用Hexo问题汇总

2018年11月15日检查此文章时更新

或许hexo不支持内嵌小型代码块,故显示有问题。

2018年11月28日更新此文章时更新

全文出现的markdown三个代码符号以及小型代码段使用“ ”代替。

本篇文章为搭建hexo博客出现过的情况以及解决方案。
我遇到的问题都会在本篇帖子里不定期更新。

您可以在博客右侧进行快速查找,也可以按下Ctrl/Command+F进行快速搜索。

本地内容创建

创建Tag页面无法显示

创建任何页面步骤:

1
2
$ cd (folders)
$ hexo new page tags(tags替换为你的任何页面)

之后应为以下内容:

1
2
3
4
5
---
title: tags
date: 2018-04-09 06:01:15
type: "tags"
---

并非大写的Tag甚至是

1
2
3
4
5
6
7
title: tags
date: 2018-04-09 06:01:15

type: “tags”

- XXX
- XXX

新建页面直接使用该名称页面的开头

问题描述:新建页面直接使用该名称页面的开头,例如创建page,直接为page/

效果(GitHub-issue列出):hexo-theme-whitecards-已知issue

点击菜单里的标签,主题也会自动更换

问题描述:自定义了light之后,重新clone了NexT主题,主题也会自动更换。

解决方案:重新安装hexo

因为5.X版本NexT已经不维护了,链接:

THIS REPO IS NOT SUPPORTED ANYMORE!DON’T NEED CREATE ISSUE HERE!NEXT MOVED HERE: https://github.com/theme-next/hexo-theme-next

本地预览相关

TypeError: Cannot read property ‘utcOffset’ of null

错误代码:

1
TypeError: Cannot read property ‘utcOffset’ of null

解决方案:

将站点配置文件“Asia-Shanghai”修改为“Asia/Shanghai”即可。

参考链接:

Can’t generate? It shows “TypeError: Cannot read property ‘offset’ of null” #1130

正确的时区表:

List of tz database time zones

本地内容修改

页面空白

问题描述:

修改本地文件夹内容,博客页面出现空白。
以下为可能出现的情况:

报错日志:

1

1
YAMLException: bad indentation of a mapping entry:

一段"at"之后

1
Unhandled rejection Error: ENOENT: no such file or directory, open '/Users/felixxiong/FelixXiongHexoFolder/themes/next/layout/_scripts/schemes/.swig'

可能的解决方案:

1:有“bad indentation of a mapping entry“报错提示的 .
在线测试工具:YAML验证器

2:”_cofig.yml“的Next主题配置文件中,”social"部分前面的空格(或注释)去掉。

详细代码:

1
2
social:
GitHub: <https://github.com/yourmame> || github
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sidebar:
# Sidebar Position, available value: left | right (only for Pisces | Gemini).
position: left //这里一定要有,之后解决问题
#position: right

# Sidebar Display, available value (only for Muse | Mist):
# - post expand on posts automatically. Default.
# - always expand for all pages automatically
# - hide expand only when click on the sidebar toggle icon.
# - remove Totally remove sidebar including sidebar toggle.
display: post //这里一定要有
#display: always
#display: hide
#display: remove

我遇到的解决方案.即使我使用的是Mist主题,并不是Pisces或者Gemini。

参考链接:

hexo s –debug 开启服务报错:no such file or directory, open hexo/themes/hexo-theme-next-5.0.1/layout/_scripts/schemes/.swig’ #1212

使用Next主题遇到的一个坑

在主题配置文件配置友链后,hexo g报错 #737

自己之前的提问:

Google 网上论坛:为什么我只是修改了_config.yml,本地和博客都无法预览了?显示为空白页。

GitHub issue:NEXT主题,更新了博客内容,显示空白,本地也无法预览 #3114

GitHub issue:在主题配置文件配置友链后,hexo g报错 #737(已被锁定)

报错日志:

2

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
TypeError: /Users/felixxiong/FelixXiongHexoFolder/themes/light/layout/layout.ejs:7
5| <div id="content" class="inner">
6| <div id="main-col" class="alignleft"><div id="wrapper"><%- body %></div></div>
>> 7| <aside id="sidebar" class="alignright"><%- partial('_partial/sidebar', {}, {cache: true}) %></aside>
8| <div class="clearfix"></div>
9| </div>
10| <footer id="footer" class="inner"><%- partial('_partial/footer') %></footer>

/Users/felixxiong/FelixXiongHexoFolder/themes/light/layout/_partial/sidebar.ejs:2
1| <% theme.widgets.forEach(function(widget){ %>
>> 2| <%- partial('../_widget/' + widget) %>
3| <% }); %>

/Users/felixxiong/FelixXiongHexoFolder/themes/light/layout/_widget/weibo.ejs:4
2| <h3 class="title">我的微博</h3>
3| <ul class="weibo">
>> 4| <iframe width="100%" height="<%= theme.weibo.height%>" class="share_self" frameborder="0" scrolling="no" src="<%- theme.weibo.url %>"></iframe>
5| </ul>
6| </div>

Cannot read property 'height' of undefined
at eval (eval at compile (/Users/felixxiong/FelixXiongHexoFolder/node_modules/ejs/lib/ejs.js:584:12), <anonymous>:11:38)
at returnedFn (/Users/felixxiong/FelixXiongHexoFolder/node_modules/ejs/lib/ejs.js:615:17)
at Theme._View.View._compiledSync.locals [as _compiledSync] (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/theme/view.js:120:22)
at Theme._View.View.View.renderSync (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/theme/view.js:48:23)
at Object.partial (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/plugins/helper/partial.js:39:15)
at Object.wrapper [as partial] (/Users/felixxiong/FelixXiongHexoFolder/node_modules/lodash/lodash.js:4941:19)
at eval (eval at compile (/Users/felixxiong/FelixXiongHexoFolder/node_modules/ejs/lib/ejs.js:584:12), <anonymous>:12:17)
at Array.forEach (<anonymous>)
at eval (eval at compile (/Users/felixxiong/FelixXiongHexoFolder/node_modules/ejs/lib/ejs.js:584:12), <anonymous>:9:22)
at returnedFn (/Users/felixxiong/FelixXiongHexoFolder/node_modules/ejs/lib/ejs.js:615:17)
at Theme._View.View._compiledSync.locals [as _compiledSync] (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/theme/view.js:120:22)
at Theme._View.View.View.renderSync (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/theme/view.js:48:23)
at fragment_cache (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/plugins/helper/partial.js:36:52)
at Object.fragmentCache (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/plugins/helper/fragment_cache.js:9:32)
at Object.wrapper [as fragment_cache] (/Users/felixxiong/FelixXiongHexoFolder/node_modules/lodash/lodash.js:4941:19)
at Object.partial (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/plugins/helper/partial.js:36:17)
at Object.wrapper [as partial] (/Users/felixxiong/FelixXiongHexoFolder/node_modules/lodash/lodash.js:4941:19)
at eval (eval at compile (/Users/felixxiong/FelixXiongHexoFolder/node_modules/ejs/lib/ejs.js:584:12), <anonymous>:18:17)
at returnedFn (/Users/felixxiong/FelixXiongHexoFolder/node_modules/ejs/lib/ejs.js:615:17)
at Theme._View.View._compiled.locals [as _compiled] (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/theme/view.js:124:48)
at Theme._View.View.View.render (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/theme/view.js:29:15)
at _compiled.then.result (/Users/felixxiong/FelixXiongHexoFolder/node_modules/hexo/lib/theme/view.js:40:23)

重点摘录:

1
2
3
TypeError: /Users/felixxiong/FelixXiongHexoFolder/themes/light/layout/layout.ejs:7
Cannot read property 'height' of undefined
at eval

其他原因的参考链接:
“Unhandled rejection TypeError:…” in hexo server #121

Did you rename _config.yml.example to _config.yml as Wiki/Installation describes?

另一位回答:

I also experienced this after the first step
where it says
cd themes/hueman

I forgot to cd back to the parent directory.

Hexo Unhandled rejection TypeError \ Cannot read property ‘each’ of undefined

Cannot publish/unpublish post on Windows.Source is undefined #68

cannot publish content, Unhandled rejection TypeError: Cannot read property ‘source’ of undefined #69

这里我的解决方案:

设置微博小挂件,复制链接。并进行同步修改。

涉及的issue:

更新相关

本地可以提示更新,可是部署失败

问题描述:更新之后提示如下代码,实则未更新

1
2
3
4
To https://github.com/FelixXiong/FelixXiong.github.io
+ 4b7f1ef...4a25d1d HEAD -> master (forced update)
Branch 'master' set up to track remote branch 'master' from 'https://github.com/FelixXiong/FelixXiong.github.io'.
INFO Deploy done: git

解决方案1:

删除掉 .deploy_git 文件夹,然后 hexo clean ,hexo g -d

参考链接:Branch master set up to track remote branch master from git@github.com:ifgyong/ifgyong.github.io.git.

文章内容相关

文章markdown无法很好的解析,与本地预览不一致

问题描述:文章本地使用Typota和Atom编辑器,代码块和本地预览以及发布的不一致

解决方案:暂未解决

尝试安装过Atom插件markdown-plus。

参考链接:

[如何调用hexo渲染代码块的渲染引擎](https://segmentfault.com/q/1010000008302731/a-1020000008970112)

无法渲染 代码段

hexo 不处理自定义tag里的三个代码开头,可以让自定义tag自己处理或者等他处理完再处理,防止冲突。

那么,作为社区其他开发者怎么办呢?有解决办法吗?答案是有的,就是稍显麻烦,自己写2个filter:

1
> const rEscapeContent = /]*)>([\s\S]*?)<\ escape="">/g; > const placeholder = '\uFFFD'; > const rPlaceholder = /(?:<|<)\!--\ufffd(\d+)--(?:>|>)/g; > const cache = []; > function escapeContent(str) { > return ''; > } > hexo.extend.filter.register('before_post_render', function(data) { > data.content = data.content.replace(rEscapeContent, function(match, content) { > return escapeContent(content); > }); > return data; > }); > > hexo.extend.filter.register('after_post_render', function(data) { > data.content = data.content.replace(rPlaceholder, function() { > return cache[arguments[1]]; > }); > return data; > }); >

注意,placeholder 这个千万别和hexo(“\uFFFC”)的冲突了,选个其他的吧

文章无法有多个指定的分类

问题描述:文章无法有多个指定的分类。

解决方案:Hexo和Wordpress不一致,无法指定多个分类。

参考链接:分类和标签

分类方法的分歧
如果您有过使用WordPress的经验,就很容易误解Hexo的分类方式。WordPress支持对一篇文章设置多个分类,而且这些分类可以是同级的,也可以是父子分类。但是Hexo不支持指定多个同级分类。下面的指定方法:
categories:

  • Diary
  • Life

会使分类Life成为Diary的子分类,而不是并列分类。因此,有必要为您的文章选择尽可能准确的分类。

文章未出现

问题描述:更新博客文章有延迟

解决方案:耐心等待即可,还可以进行CDNAME加速。

参考链接:Hexo发布新文章,github更新了,但是页面就是不显示新文章

点击Read more失效

问题描述:点击Read more失效,依然是文章标题

效果(GitHub-issue列出):hexo-theme-whitecards-已知issue

解决方案:暂未解决

评论相关

无法初始化

问题描述:
无法点击初始化按钮,“Error: Not Found"字段应为按钮,点击之后即可发布。
解决方案:OAuth Application里的callback网址必须和存储评论的repo网址一致。

参考链接:
Gitment:使用 GitHub Issues 搭建评论系统

GitHub:A comment system based on GitHub Issues.

无法显示留言

问题描述:重新部署之后无法显示留言于评论中

解决方案:检查站点配置文件中config.yml的learncloud的appid是否为之前设置的ID(或检查有留言的那个)。

图片相关

上传文章图片(图床解决方案)

官方文档中的相对路径解释:
资源文件夹

之前我撰写文章为Typora,而后和网友(这是他的主页)得知:

Typora解析的是md不是swig

即使写了:

1
2


也无法预览。

目前上传图片的方案:我使用的是以下图床。

一个简单实用的图床 Chrome 插件

关于研究hexo中的资源文件夹以及相对路径的使用,将会在以后进行研究。

Widget相关

ERROR Process failed

在安装以下:Hexo-theme-light_cn其中的小部件时,

里面的微博:Hexo-theme-light_cn / layout / _widget /weibo.ejs

报错提示:

1
ERROR Process failed: layout/_widget/weibo.ejs

解决方案:终端给出的解决方案:

1
2
3
4
5
SyntaxError: missing ) after argument list in /Users/felixxiong/FelixXiongHexoFolder/themes/light/layout/_widget/weibo.ejs while compiling ejs

If the above error is not helpful, you may want to try EJS-Lint:
https://github.com/RyanZim/EJS-Lint
npm install ejs-lint

相应的网站:

我的解决方案:暂未解决

部署相关

问题描述:在结束部署时(点击hexo g -d)会出现分支错误。

错误代码:

1
2
3
To https://github.com/FelixXiong/yourmane.github.io
feXeXXa..XXdXXbX HEAD -> master
Branch 'master' set up to track remote branch 'master' from 'https://github.com/FelixXiong/yourmane.github.io'.

解决方案:

git版本控制:如何处理当前分支为*(no branch)的情况

Branch master set up to track remote branch master from#2570

侧边栏相关

无法显示网站小图标

问题描述:图标显示错误,涉及所有文章索引错误

参考教程 :Hexo NexT 博客增加知乎豆瓣图标支持

问题帖子:博客目前遇到了几个问题

解决方案:

1
<i class="{{ link.split('||')[1] | trim | default('fa fa-fw fa-globe') }}"></i>{#

此行代码应该修改于正确的位置。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{% if theme.social %}
<div class="links-of-author motion-element">
{% for name, link in theme.social %}
<span class="links-of-author-item">
<a href="{{ link.split('||')[0] | trim }}" target="_blank" title="{{ name }}">
{% 此处不应该修改成下方的图标显示连接 %}
{% if theme.social_icons.enable %}
<i class="{{ link.split('||')[1] | trim | default('fa fa-fw fa-globe') }}"></i>{#
#}{% endif %}{#
#}{% if not theme.social_icons.icons_only %}{#
#}{{ name }}{#
#}{% endif %}{#
#}</a>
</span>
{% endfor %}
</div>
{% endif %}
FelixXiong wechat
产品北里,讲述产品和人性、涉及设计、技术和运营的公众号。
你们的赞赏是我更新的动力~