Jekyll Post nicht generiert


100

Ich versuche, meiner Jekyll-Site einen neuen Beitrag hinzuzufügen, kann ihn jedoch beim Ausführen nicht auf den generierten Seiten sehen jekyll serve.

Was sind einige häufige Gründe dafür, dass ein Jekyll-Beitrag nicht generiert wird?

Antworten:


230

1
Die Verwendung future:trueohne Leerzeichen nach :in _config,ymlführt zu ERR: Konfigurationsdatei: (UNGÜLTIG). future: truedie meisten werden stattdessen verwendet.
yaitloutou

Ein weiterer möglicher Grund ist das Vergessen, die .markdownErweiterung zum Dateinamen hinzuzufügen . Ich weiß das, weil ich gerade 5 Minuten meines Lebens damit verschwendet habe.
H2ONOCK

Ich danke dir sehr! Ich habe gerade 30 Minuten gesucht, warum mein Beitrag nicht angezeigt wurde, bis ich verstanden habe, dass es einen Datumsfilter gibt ... (in 15 Minuten würde es "magisch" funktionieren ...). Die zukünftige Option wurde hinzugefügt und alles funktioniert wie erwartet. true sollte meiner Meinung nach Standard sein.
Matthias Kleine

1
Was vermisse ich. Mein Beitrag hier hat einen Doppelpunkt im Titel und es ist in Ordnung? raw.githubusercontent.com/alexharv074/alexharv074.github.io/… und es scheint hier in Ordnung zu sein ? alexharv074.github.io
Alex Harvey

1
@ AlexHarvey Danke für den Kommentar! Dies scheint in der Tat kein Problem mehr zu sein. Ich habe meine Antwort aktualisiert.
Aronisstav

19

Sie können verwenden jekyll build --verbose, um den Erstellungsprozess im Detail anzuzeigen.

Beispielausgabe:

  Logging at level: debug
Configuration file: /home/fangxing/fffx.github.io/_config.yml
  Logging at level: debug
         Requiring: jekyll-archives
         Requiring: jekyll-livereload
         Requiring: kramdown
            Source: /home/fangxing/fffx.github.io
       Destination: /home/fangxing/fffx.github.io/_site
 Incremental build: enabled
      Generating... 
       EntryFilter: excluded /Gemfile
       EntryFilter: excluded /Gemfile.lock
           Reading: _posts/2018-01-14-new-post.md
           Reading: _posts/2014-01-01-example-content.md
           Reading: _posts/2014-01-02-introducing-lanyon.md
           Reading: _posts/2017-11-21-welcome-to-jekyll.markdown
           Reading: _posts/2018-01-14-boot-android-on-charge.md
           Reading: _posts/2013-12-31-whats-jekyll.md
          Skipping: _posts/2018-01-14-boot-android-on-charge.md has a future date
        Generating: Jekyll::Archives::Archives finished in 0.000122873 seconds.
        Generating: JekyllFeed::Generator finished in 0.000468846 seconds.
        ...

Aus dem Protokoll fand ich jeklly übersprungen, 2018-01-14-boot-android-on-charge.mdweil es ein zukünftiges Datum hat.


6

Ein möglicher Grund ist, dass die datein der Titelseite angegebene Zeitzone keinen Zeitzonenversatz enthält. In diesem Fall wird standardmäßig UTC verwendet, nicht wie erwartet die Zeitzone des lokalen Computers. Ich habe eine Stunde damit verschwendet, bis UTC meine aktuelle lokale Zeitzone BST "eingeholt" hat.

Ich habe keine endgültige Antwort darauf gefunden, aber ich denke, das Datum in der Titelseite muss in UTC mit einem Zeitzonenversatz angegeben werden (der standardmäßig Null ist, wenn er weggelassen wird).

Dies date: 2018-05-03 12:34:27 gilt auch für UTC, unabhängig davon, wo auf der Welt Sie sich befinden, und unabhängig von der timezoneEinstellung in _config.yml.

Achten Sie also darauf, Daten wie folgt anzugeben:

date: 2018-05-03 12:34:27 +0100

1
Das Format date: 2018-05-03 12:34:27 +01:30scheint auch zu funktionieren. Beachten Sie den zusätzlichen Doppelpunkt.
YinglaiYang

Verschwendete 10 Minuten, um zu erkennen, dass dies das Problem war. Vielen Dank!
Samisnotinsane

2

Oder es kann auch ein Browser-Cache sein, wenn Sie nicht im Ordner _site, sondern direkt auf der Hauptseite des Blogs mit der Liste der Beiträge suchen .


2

Ich habe Rspec-Tests für mein Blog geschrieben, die diese Regeln ausdrücken:

require 'spec_helper'
require 'yaml'

# Documented at https://jekyllrb.com/news/2017/03/02/jekyll-3-4-1-released/
post_regex = %r!^(?:.+/)*(\d{2,4}-\d{1,2}-\d{1,2})-(.*)(\.[^.]+)$!

def date_in_front_matter(date)
  return date if date.is_a?(Date)
  return date.to_date if date.is_a?(Time)
  return Date.parse(date) if date.is_a?(String)
end

describe 'posts' do
  Dir.glob("_posts/*md").each do |file|
    basename = File.basename(file)

    context basename do
      front_matter = YAML.load(File.read(file).split(/---/)[1])

      it 'filename must match documented post regex' do
        expect(basename).to match post_regex
      end

      it 'date in file name same day as date in front matter' do
        date_in_file_name = Date.parse(post_regex.match(basename).captures[0])
        expect(date_in_front_matter(front_matter['date'])).to eq date_in_file_name
      end

      it 'title in front matter should not contain a colon' do
        expect(front_matter['title']).to_not match /:/
      end

      it 'front matter should not have published: false' do
        expect(front_matter['published']).to_not be false
      end
    end
  end
end

Dies kann für andere von Nutzen sein, da ich aufgrund von Tippfehlern im Datum usw. viel Zeit verloren habe.

Diese Tests zusammen mit dem Rest der Rspec-Konfiguration können hier im Kontext gesehen werden .


2

Um noch einen weiteren Grund hinzuzufügen: Wenn Sie einen Artikel von _draftsnach verschieben _post, müssen Sie manchmal den löschen, _sitedamit der Artikel neu generiert werden kann.

In meinem Fall kommt es häufig vor, dass diese vor der _siteNeuerstellung nicht vollständig gelöscht werden, sodass der neue Artikel nicht angezeigt wird.

Sowieso rm -rf _siteund bundle exec jekyll servefunktioniert :)


1

Wenn Sie die Datei nicht verfolgen können --verboseund die Datei stillschweigend ignoriert wird, versuchen Sie, sie collections_dirin der config.ymlDatei zu entfernen . Das hat das Problem für mich gelöst.


0

Mein Beitrag erschien auch nicht und der Fehler war, dass ich in meinem Namen einen Punkt verwendet habe, z 2017-10-18-test.2.md.
Dies wird nicht akzeptiert, Sie müssen verwenden 2017-10-18-test2.md.


0

Wenn Sie Ihre vordere Angelegenheit überprüft haben und alles in Ordnung zu sein scheint und sogar jekyll build --verbosenichts preisgibt (in meinem Fall hat es sich nur so verhalten, als ob die Datei überhaupt nicht vorhanden wäre, und sie nicht einmal als ausgeschlossen aufgeführt), überprüfen Sie die Codierung Ihrer Datei. Anscheinend muss es UTF-8ohne Unterschrift sein. Wenn es so ist UTF-8 BOM(oder UTF-8 with Signaturewie es einige Texteditoren nennen), wird es stillschweigend ignoriert. Um die Sache noch schlimmer zu machen, zeigen einige Editoren beide Typen als gerecht an UTF-8, wodurch der Unterschied noch schwerer zu erkennen ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.