2012-05-02 71 views
5

當我做一個語法錯誤在前面的問題,我發現了以下錯誤:jekyll破碎的前置物,如何找到破損的文件?

/.../psych.rb:203:in `parse': (<unknown>): could not find expected 
':' while scanning a simple key at line 6 column 1 
(Psych::SyntaxError) 
     from /.../psych.rb:203:in `parse_stream' 
     from /.../psych.rb:151:in `parse' 
      from .... 

你知道一種方法來告訴什麼文件引起的問題?

我知道,我大概可以使用DTrace如下:

dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'| grep _posts 

但是我正在尋找一些更直截了當。

+1

您使用的是什麼版本的jekyll?在0.11.0中,我得到了類似於'YAML異常'的信息,如果我有錯誤的YAML,請閱讀第3行中的語法錯誤2012-04-29-a-new-post.md:col -1:'。 –

+0

@Alan,然而我使用了相同版本的jekyll,但是可能這個問題出現在我使用1.9.3的ruby的新yaml解析器中。謝謝你的幫助。 –

+2

我有這個問題,然後我意識到我的database.yml文件不是嚴格正確的。 (我在':'後面留下了一個空格)我解決了這個問題,並且通過了這個錯誤。 –

回答

4

它接縫說jekyll在紅寶石1.9.3上工作不好。引入了更嚴格的yaml解析器:Psych可能具有不同的異常層次結構,並且由於它沒有被jekyll正確處理。

3

您可能會發現,這是由於誤格式化

造成的。如果你前面的問題是這樣的:

--- 
menu: 
- text: Home 
url: /en/index.html 
- text: Overview 
url: /en/overview.html 
--- 

,而不是

--- 
menu: 
- text: Home 
    url: /en/index.html 
- text: Overview 
    url: /en/overview.html 
--- 

那麼YAML解析器會拋出出來。

+1

是的,在我的情況下,它的yml文件加載在environment.rb。因此我得到這個錯誤。通過更正yml文件解決。 – Hardik