最近在学习ng2,正巧博客也从wordpress换到了hexo,使用下来觉得还挺好的。
angular的模板语法使用两个大括号来表示的{{}}
,然后我的博客又整理的是学习笔记,那么自然不可避免的在博客中会插入代码,所以出现了这个问题:
1 | Unhandled rejection Template render error: (unknown path) [Line 4, Column 148] |
很绝望,也没说明是哪个文件有问题,只是说在解析过程中发生了错误。可以确定的是肯定是和angular模板的插值表达式{{}}
出现了冲突。
然后google这个问题,发现的确是这个括号有问题:
Every interaction is both Hexo uses Nunjucks to render posts (Swig was used in older version, which share a similar syntax). Content wrapped with {{ }} or {% %} will get parsed and may cause problems. You can wrap sensitive content with the raw tag plugin.precious and an opportunity to delight.
Hexo使用Nunjucks来渲染帖子(Swig在旧版本中使用,它们有相似的语法)。 使用{{}}或{%%}包装的内容将被解析,并可能导致问题。
Nunjucks是一套富功能的模板引擎。模板语言功能强大,支持块继承、自动转义、宏、异步控制等功能。
说是可以用hexo的raw标签来把有冲突的文本包起来让hexo对大括号不做解析:
1 | {% raw %} |
所以我很粗暴的把整个文章都用raw标签包起来了,发现大括号是不解析了,代码高亮也没了,连换行也没了,灾难啊。
看来还需要精确到哪个语句发生了问题。
我排查了多个博客发现,多行代码中的大括号是没问题的,只有在单行注释中的大括号才会报错。
这好办了,只要将单行代码中的大括号包含在raw标签中就可以了。
1 | 插值表达式`{% raw %}{{}}{% endraw %}`出现了冲突 |
然后替换所有文件中的单行代码中的大括号为上面这个样子,就ok了。