Hexo 异常

在使用 Hexo 调试时,一直出现 Template render error: unexpected token: }} 的异常,显然是出现了特殊字符导致无法解析。

在上一篇 Python 利用 Jinja2 模版生成文档 中,每次执行 hexo s 或 hexo g,都会报错:

1
2
3
4
5
6
7
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Template render error: unexpected token: }}
at new exports.TemplateError (E:liuhao_datahexo-blognode_moduleshexonode_modulesnunjuckssrclib.js:51:19)
at new_cls.fail (E:liuhao_datahexo-blognode_moduleshexonode_modulesnunjuckssrcparser.js:64:15)
at new_cls.parsePrimary (E:liuhao_datahexo-blognode_moduleshexonode_modulesnunjuckssrcparser.js:947:18)
at new_cls.parseUnary (E:liuhao_datahexo-blognode_moduleshexonode_modulesnunjuckssrcparser.js:882:25)
.......

原因

原文中有这句话:

出错时 Markdown 原文是这样的:

1
先创建一个包括 `{{ }}`或 `{% %}` 等特殊符号的模板文档

其中 {{ }} {% %} 被当成 hexo 模板中的标签,解析出错。

解决方法

Github 上给出的方法是在需要显示 {{ }} 符号的地方用如下代码包围:

1
2
3
{% raw %}

{% endraw %}

标记这部分不需要解析。

  • 修改后的 Markdown 原文
1
先创建一个包括 `{%} {{ }} {%endraw%}` 或 `{%raw%} {% %} {%endraw%}` 等特殊符号的模板文档
  • 解决后的效果

先创建一个包括 {{ }} {% %} 等特殊符号的模板文档

虽然有点麻烦,但也算临时解决了这个问题,这是个已知 bug ,希望后续的版本能修复吧,毕竟使用太多 hexo 专属的标签对博客以后的迁移、改版什么的来说还是很麻烦的。

  • 补充

用 ``` 包围的代码块不需要这样特殊处理。

参考:

  1. http://lovenight.github.io/2016/09/27/Hexo%E6%8A%A5%E9%94%99Template-render-error-tag-name-expected/
  2. https://icewing.cc/post/hexo-bug-of-quot.html