1

我的 GitHub 项目有问题。我正在尝试通过 trustworthy.netlify.com 使其在线,但出现页面构建错误:

您的站点在构建时遇到问题:functions/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 的了解不够多,不知道在哪里添加“}}”,或者即使我应该添加,我也不想意外地给我的网站造成巨大的问题。我该怎么办?

4

1 回答 1

4

您需要使用{% raw %}and转义模板语法{% endraw %}

Jekyll在解析为 Markdown 之前通过Liquid模板系统传递您的Markdown。这允许您在文档中定义变量,Liquid 将替换为内容。然后将现在完整的文档传递给 Markdown 解析器以转换为 HTML。

虽然当您想在文档中包含变量时这很有用,但当您想在 Markdown 中包含类似模板的语法作为代码示例时,它可能会很烦人。很容易假设,因为模板语法在代码块或跨度中,它将被忽略。但是,Liquid 不了解 Markdown 语法,也无法区分实际模板变量和代码示例之间的区别。

在您的特定情况下,Liquid 提出了一个错误,坚持{{a}应该是{{a}}. 当然,这是不正确的。{{a}只是您 Markdown 中的一个代码示例。但是 Jekyll 从来没有使用过 Markdown 解析器,因为它被 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 解析器将接收您想要的内容。

于 2018-11-07T15:32:32.683 回答