我的GitHub项目有问题。我正尝试在trustworthy.netlify.com上使其联机,但是存在页面构建错误:
您的站点在构建时遇到问题:函数/node_modules/balanced-match/README.md中第50行的变量{{a}未使用}}关闭。有关更多信息,请参见https://help.github.com/articles/page-build-failed-tag-not-properly-terminated/。
我认为我可以在{a}之后添加“}}”,但这是它所指的代码行:
If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.
我对Markdown语言或GitHub的了解不足,甚至不知道在哪里添加“}}”,而且我也不想在我的网站上无意中造成大问题。我该怎么办?
答案 0 :(得分:2)
您需要使用{% raw %}
和{% endraw %}
来转义模板语法。
Jekyll通过passes模板系统{@ 3}}将您的Markdown解析为Markdown。这使您可以在文档中定义变量,Liquid会将这些变量换成内容。然后,将现在完整的文档传递给Markdown解析器,以将其转换为HTML。
虽然当您想在文档中包括变量时很有用,但是当您想要在Markdown中包括诸如语法之类的模板作为代码样本时,这可能会很烦人。很容易假设由于模板语法在代码块或跨度中,因此将被忽略。但是,Liquid不了解Markdown语法,也无法说出实际模板变量和代码样本之间的区别。
在您的特定情况下,Liquid提出了一个错误,坚持要求{{a}
应该是{{a}}
。当然,这是不正确的。 {{a}
只是Markdown中的代码示例。但是Jekyll从来没有去过Markdown解析器,因为它挂在Liquid视为模板语法错误的东西上了。因此,您需要使用Liquid的Liquid来告诉Liquid忽略代码示例:
{% raw %}
If the `str` contains more `a` than `b` / there are unmatched pairs,
the first match that was closed will be used. For example, `{{a}`
will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.
{% endraw %}
通过将完整的段落包装在{% raw %}
和{% endraw %}
标记中,我们告诉Liquid忽略内容,并将其原样传递。 Liquid将删除原始标签,Markdown解析器将收到您想要的内容。