Hexo 异常 - Template render error unexpected token

在使用 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_data\hexo-blog\node_modules\hexo\node_modules\nunjucks\src\lib.js:51:19)
at new_cls.fail (E:\liuhao_data\hexo-blog\node_modules\hexo\node_modules\nunjucks\src\parser.js:64:15)
at new_cls.parsePrimary (E:\liuhao_data\hexo-blog\node_modules\hexo\node_modules\nunjucks\src\parser.js:947:18)
at new_cls.parseUnary (E:\liuhao_data\hexo-blog\node_modules\hexo\node_modules\nunjucks\src\parser.js:882:25)
.......

原因

原文中有这句话:

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

出错时 Markdown 原文是这样的:

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

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

解决方法

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

1
2
3
{% raw %}

{% endraw %}

标记这部分不需要解析。

  • 修改后的 Markdown 原文
1
先创建一个包括 `{%raw%} {{ }} {%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
hoxis wechat
一个脱离了高级趣味的程序员,关注回复1024有惊喜~
赞赏一杯咖啡
  • 本文作者: hoxis | 微信公众号【不正经程序员】
  • 本文链接: https://hoxis.github.io/hexo-unexpected-token.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!
0%