0

このコードを Hexo マークダウン.mdページに挿入できません。

<div class="container">
  <h1>Works</h1>
  <ul class="row-fluid block-grid-4">
  {{#each model as |w index|}}
    <li>
      <h5>{{w.title}}</h5>
      <p>Owner: {{w.owner}}</p>
      <p>{{#link-to "work" w.id}}<img class="img-responsive img-rounded" src={{w.image}} alt={{w.title}}>{{/link-to}}</p>
    </li>
  {{/each}}
  </ul>
</div>

インデント 4 スペースで十分だと思っていましたが、常にこのエラーが発生しました。

INFO  Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.
Unhandled rejection Template render error: unexpected token: #
    at Error.exports.TemplateError (/opt/www/jusfeel/node_modules/nunjucks/src/lib.js:51:19)
    at Object.extend.fail (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:64:15)
    at Object.extend.parsePrimary (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:947:18)
    at Object.extend.parseUnary (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:882:25)
    at Object.extend.parsePow (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:856:25)
    at Object.extend.parseMod (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:844:25)
    at Object.extend.parseFloorDiv (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:832:25)
    at Object.extend.parseDiv (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:820:25)
    at Object.extend.parseMul (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:808:25)
    at Object.extend.parseSub (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:796:25)
    at Object.extend.parseAdd (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:784:25)
    at Object.extend.parseCompare (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:751:25)
    at Object.extend.parseIn (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:720:23)
    at Object.extend.parseNot (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:716:21)

hash( \#) をエスケープすると、新しいエラーが発生しました。

FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Template render error: expected variable end
    at Error.exports.TemplateError (/opt/www/jusfeel/node_modules/nunjucks/src/lib.js:51:19)
    at Object.extend.fail (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:64:15)
    at Object.extend.advanceAfterVariableEnd (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:133:18)
    at Object.extend.parseNodes (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:1159:22)
    at Object.extend.parseAsRoot (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:1177:42)
    at Object.module.exports.parse (/opt/www/jusfeel/node_modules/nunjucks/src/parser.js:1199:18)
    at Object.module.exports.compile (/opt/www/jusfeel/node_modules/nunjucks/src/compiler.js:1118:48)
    at Obj.extend._compile (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:444:35)
    at Obj.extend.compile (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:433:18)
    at null.<anonymous> (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:378:22)
    at Object.exports.withPrettyErrors (/opt/www/jusfeel/node_modules/nunjucks/src/lib.js:24:16)
    at Obj.extend.render (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:374:20)
    at Obj.extend.renderString (/opt/www/jusfeel/node_modules/nunjucks/src/environment.js:261:21)
    at /opt/www/jusfeel/node_modules/hexo/lib/extend/tag.js:56:9

これはかなりイライラします..コードをコピーしてページに貼り付けたいと思うのですが、これを手動で修正する必要があります..

さらに、{% raw %}コピー元のコードが生ではないため、使用できません(&gt;同様)

4

1 に答える 1

2

関連するエラーは両方とも、TemplateErrorMarkdown とは関係のない です。Hexoは、Markdown ドキュメント内でのテンプレート タグの使用をサポートしているようです。もちろん、テンプレート タグは Markdown の一部ではありません。おそらく、Hexo はテンプレート エンジンを介して Markdown ドキュメントを実行し、最初にテンプレート タグを処理してから、テンプレート エンジンの出力を Markdown を介して渡します。

もちろん、テンプレート エンジンは、Markdown についても、テキストがコード ブロック内にあるかどうかについても何も知りません。したがって、テンプレート タグのような構文を含むコード ブロックを解析しようとしており、(正しく) コードが有効なテンプレートではないため、エラーが発生します。個人的には、まさにこの理由でこれを行うツールが好きではありませんでした。サンプル テンプレート コードを Markdown コード ブロックに含めることはほぼ不可能です。

私はほとんど不可能だと言います。テンプレート構文をエスケープする必要があります。ドキュメントの状態として:

特定のコンテンツが投稿で処理の問題を引き起こしている場合は、rawタグでラップして、レンダリング エラーを回避します。

{% raw %}
<div class="container">
  <h1>Works</h1>
  <ul class="row-fluid block-grid-4">
  {{#each model as |w index|}}
    <li>
      <h5>{{w.title}}</h5>
      <p>Owner: {{w.owner}}</p>
      <p>{{#link-to "work" w.id}}<img class="img-responsive img-rounded" src={{w.image}} alt={{w.title}}>{{/link-to}}</p>
    </li>
  {{/each}}
  </ul>
</div>
{% endraw %}

rawテンプレート エンジンは、Markdown パーサーが Markdown を適切に解析できるように、タグを削除しながらブロックを無視してスキップするようになりました。

または... #1404および#1372によると、フェンスで囲まれたコード ブロックも機能します。コード ブロックをインデントするのではなく、バッククォートで囲みます。

```
<div class="container">
  <h1>Works</h1>
  <ul class="row-fluid block-grid-4">
  {{#each model as |w index|}}
    <li>
      <h5>{{w.title}}</h5>
      <p>Owner: {{w.owner}}</p>
      <p>{{#link-to "work" w.id}}<img class="img-responsive img-rounded" src={{w.image}} alt={{w.title}}>{{/link-to}}</p>
    </li>
  {{/each}}
  </ul>
</div>
```

これがフェンスで囲まれたコード ブロックでは機能するのに、標準のインデントされたコード ブロックでは機能しないのは奇妙です。しかし、あなたはそれを試してみたいかもしれません. 機能する場合は、ドキュメントを更新する必要があります。

于 2016-02-16T20:30:42.620 に答える