【问题标题】:Invalid date while building on Github Pages在 Github 页面上构建时日期无效
【发布时间】:2017-01-11 16:22:22
【问题描述】:

我将更新推送到我的 Github Pages 站点,但构建失败。不过在本地它构建得很好。

回购:https://github.com/valeIT/valeIT.github.io/

页面构建失败,出现以下错误:

值“nil”已传递给期望有效的日期相关过滤器 /_layouts/post.html 或其布局之一中的日期。更多 信息,见 https://help.github.com/articles/page-build-failed-date-is-not-a-valid-datetime/.

有关 Jekyll 故障排除的信息,请参阅:

https://help.github.com/articles/troubleshooting-jekyll-builds

我查看了“/_layouts/post.html”,但我对 Liquid 的了解非常基础,看不出其中有什么问题。

post.html 的内容:

---
---
<!DOCTYPE html>
<html>
  {% include head.html %}
  <body itemscope itemtype="http://schema.org/Article">
    {% include header.html %}
    <main class="content" role="main">
      <article class="post">
        {% if page.image %}
        <div class="article-image">
          <div class="post-image-image" style="background-image: url({% if page.image %}{{ page.image }}{% endif %})">
            Article Image
          </div>
          <div class="post-image-image2" style="background-image: url({% if page.image2 %}{{ page.image2 }}{% endif %})">
            Article Image
          </div>
          <div class="post-meta">
            <h1 class="post-title">{{ page.title }}</h1>
            <div class="cf post-meta-text">
              <div class="author-image" style="background-image: url({{ site.author_image }})">Blog Logo</div>
              <h4 class="author-name" itemprop="author" itemscope itemtype="http://schema.org/Person">{{ site.author }}</h4>
              on
              <time datetime="{{ page.date | date: "%F %R" }}">{{ page.date | date_to_string }}</time>
              <!-- , tagged on {{#foreach tags}}<span class="post-tag-{{slug}}">{{#if @first}}{{else}}, {{/if}}<a href="/tag/{{slug}}">{{name}}</a></span>{{/foreach}} -->
               - {{ page.content | number_of_words }} Words - {{ content | reading_time_as_i }}.
            </div>
            <div style="text-align:center">
              <a href="#topofpage" class="topofpage"><i class="fa fa-angle-down"></i></a>
            </div>
          </div>
        </div>
        {% else %}
        <div class="noarticleimage">
          <div class="post-meta">
            <h1 class="post-title">{{ page.title }}</h1>
            <div class="cf post-meta-text">
              <div class="author-image" style="background-image: url({{ site.author_image }})">Blog Logo</div>
              <h4 class="author-name" itemprop="author" itemscope itemtype="http://schema.org/Person">{{ page.author }}</h4>
              on
              <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date_to_string }}</time>
              <!-- , tagged on {{#foreach tags}}<span class="post-tag-{{slug}}">{{#if @first}}{{else}}, {{/if}}<a href="/tag/{{slug}}">{{name}}</a></span>{{/foreach}} -->
            </div>
          </div>
        </div>
        <br>
        <br>
        <br>
        {% endif %}
        <section class="post-content">
          <div class="post-reading">
            <span class="post-reading-time"></span> read
          </div>
          <a name="topofpage"></a>
          {{content}}
        </section>
        <footer class="post-footer">
          <section class="share">
            {% for social in site.social %}
              {% if social.share_url != null %}
                <a class="icon-{{ social.icon }}" href="{{ social.share_url }}{{ social.share_title }}{{page.title | cgi_escape}}{{ social.share_link }}{{site.url}}{{page.id}}"
                  onclick="window.open(this.href, '{{ social.icon }}-share', 'width=550,height=255');return false;">
                <i class="fa fa-{{ social.icon }}"></i><span class="hidden">{{ social.icon }}</span>
                </a>
              {% endif %}
            {% endfor %}
          </section>
        </footer>
        <div class="bottom-teaser cf">
          <div class="isLeft">
            <h5 class="index-headline featured"><span>Written by</span></h5>
            <section class="author">
              <div class="author-image" style="background-image: url({{site.author_image}})">Blog Logo</div>
              <h4>{{ site.author }}</h4>
              <p class="bio">{{author.bio}}</p>
              <hr>
              <p class="published">Published <time datetime="{{ page.date | date: "%F %R" }}">{{ page.date | date_to_string }}</time></p>
            </section>
          </div>
          {{/post}}
          <div class="isRight">
            <h5 class="index-headline featured"><span>Supported by</span></h5>
            <footer class="site-footer">
               <section class="poweredby"><a href ="{{site.url}}/apps">Check Out My Apps</a></section>
              <a class="subscribe" href="{{ "/feed.xml" | prepend: site.baseurl }}"> <span class="tooltip"> <i class="fa fa-rss"></i> You should subscribe to my feed.</span></a>
              <div class="inner">
                <section class="copyright">All content copyright <a href="{{@blog.url}}/">{{site.author}}</a> &copy; {{ site.time | date: '%Y' }}<br>All rights reserved.</section>
              </div>
            </footer>
          </div>
        </div>
        {%if site.disqus %}
        <div id="disqus_thread"></div>
        <script type="text/javascript">
            /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
            var disqus_shortname = '{{site.disqus}}'; // required: replace example with your forum shortname
            /* * * DON'T EDIT BELOW THIS LINE * * */
            (function() {
                var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
                dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
                (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
            })();
        </script>
        <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
        {% endif %}
      </article>
    </main>
    <div class="bottom-closer">
      <div class="background-closer-image" {%if site.cover %} style="background-image: url({{ site.cover }})"{% endif %}>
        Image
      </div>
      <div class="inner">
        <h1 class="blog-title">{{ site.title }}</h1>
        <h2 class="blog-description">{{ site.description }}</h2>
        <a href="/" class="btn">Back to Overview</a>
      </div>
    </div>
    {% include javascripts.html %}
  </body>
</html>

有什么想法吗?

【问题讨论】:

    标签: github jekyll


    【解决方案1】:

    失败是因为

    值“nil”被传递给与日期相关的过滤器

    这意味着在您的帖子布局中,您可能正在处理带有layout: post 的非帖子内容,例如,在其前端内容中不包含date 值的页面(在 --- 之间的内容顶部)。

    然后像 &lt;time datetime="{{ page.date | date_to_xmlschema }}"&gt;{{ page.date | date_to_string }}&lt;/time&gt; 这样的代码将失败,因为您将 '' 传递给 date_to_string 过滤器。

    你有两个选择:

    • 识别具有错误layout: post属性的页面并将它们更改为layout: page
    • 在将日期值发送到过滤器之前,让您的代码更安全地检查日期是否为非 NIL,例如,使用上面的 time 标记,首先检查 date 是否包含日期:

       {% if page.date %}
       <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date_to_string }}</time>
       {% endif %}
      

    另外,当 jekyll 在本地生成网站时,它会显示很多警告,例如:

    Liquid Warning: Liquid syntax error (line 76): Unexpected character / in "{{/post}}" in /_layouts/post.html
    Liquid Warning: Liquid syntax error (line 79): Unexpected character / in "{{!! After all the posts, we have the previous/next pagination links }}" in index.html
    

    您应该删除那些斜线 {{/posts}}{{posts}},以及液体标签内的其他符号,如 @#

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 2021-05-08
      • 2016-04-13
      • 2020-04-09
      • 2014-04-03
      • 2018-06-23
      相关资源
      最近更新 更多