jekyll: 无效日期:''不是有效的日期时间

9

我是一名新手,正在学习jekyll:

目前为止,我已经按照教程所述完成了以下步骤:这是我在_layout:post.html文件中的内容:

---
layout: default
---

<div class="post">
  <h1>{{ page.title }}</h1>
  <span class="post-date">{{ page.date | date_to_string }}</span>
  {{ content }}
</div>

<div class="related">
  <h2>Related Posts</h2>
  <ul class="related-posts">
    {% for post in site.related_posts limit:3 %}
      <li>
        <h3>
          <a href="{{ post.url }}">
            {{ post.title }}
            <small>{{ post.date | date_to_string }}</small>
          </a>
        </h3>
      </li>
    {% endfor %}
  </ul>
</div>

我使用一个名为2014-01-01-myNewPost.md的md文件,但是遇到了以下错误:

      Generating...       Invalid Date: '' is not a valid datetime.
  Liquid Exception: exit in _layouts/post.html

我似乎没有看到任何问题,但无法真正弄清楚为什么它不起作用。


可能是Jekyll - 更新后出现无效日期错误的重复问题。 - mechanicalfish
5个回答

3

我的问题是,无论什么原因,在运行“jekyll serve --incremental”命令时,终端总是会出现以下错误:

Liquid Exception: Invalid Date: 'nil' is not a valid datetime. in /_layouts/post.html
         ERROR: YOUR SITE COULD NOT BE BUILT:
                ------------------------------------
                Invalid Date: 'nil' is not a valid datetime.

经过深入挖掘,发现这是因为Jekyll会在根目录中获取任何类型的帖子,即使它们位于完全不同的文件夹中。我把我的帖子放在“_posts”文件夹中,把测试帖子放在“old_posts”文件夹中。
只要在项目根目录下有“old_posts”文件夹,就会出现此错误。请确保您没有类似的东西。

好的答案。我已经将一堆虚拟帖子移动到项目文件夹中的另一个文件夹中。当我尝试重新构建网站时,Jekyll并不喜欢它。 - openwonk

2

很可能您已将示例文章移动到其他目录,例如examples。Jekyll会在那里找到这些文章并尝试处理它们,这导致了遇到的问题。

_config.yml中将examples文件夹添加到排除列表中,Jekyll将如预期启动。


1
似乎您在文章的YAML元数据中有一个日期变量的错字。请检查您的文章日期是否符合YYYY-MM-DD HH:MM:SS的格式。
我已经检查了上面发布的文章布局代码,没有问题。
如果没有作用,请卸载Jekyll并通过运行这些命令安装最新的稳定版本1.2.1。
~ $ gem uninstall jekyll
~ $ gem install jekyll --version(="1.2.1")

2
如果前置内容中没有日期,怎么会出现错误呢? - kleinfreund

1
我曾经遇到过这种情况,后来发现我不小心用选项点击复制了一个文件夹从而在我的_posts目录中产生了重复,这个文件夹就存放在我的网站根目录下。如果处理器能在一般的错误信息之外提供有关错误原因的详细描述,那将会很好。

0

根据这个GitHub问题,如果您将某些内容标记为“post”,然后尝试格式化日期,Jekyll会发出警告,如果该内容的标题或前置元素中没有日期,则不会发生这种情况。如果您引用{{ page.date }}而不进行格式化,则必须是格式函数中的某种nil错误。

我刚遇到了这个问题,并意识到我已经在文件名为example.md而不是2016-01-01-example.md时,在前置元素中使用了layout:post标签。我将这些文件更改为layout:page,问题得到解决。

因此,至少在我的网站上,我必须确保没有日期的内容是页面,而具有日期的内容是帖子。(当我重新设计网站并尝试恢复它时,我从我的帖子布局中删除了日期。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接