2013-08-07 112 views
0

我有繼承多層次,nodejs,玉多重繼承不起作用?

測試layout.jade

html 
    head 
    title My Site - #{title} 
    body 
    block content 
    block foot 
     #footer 
     p some footer content 

test.jade

extends test-layout 

block content 
    h1 titllllllllle 
    p some text 

測試child.jade

extends test 

block content 
    .sidebar 
    li 
     block sidebar 
     p nothing 
    .primary 
    li 
     block primary 
     p nothing 

測試孫子

extend test-child 

block sidebar 
    b this is grandson sidebar 

block primary 
    b this is grandson primary 

http://*/test

我得到了這個問題:

500 Error: F:\express\views\test\test-layout.jade:2 
1| extends test-layout 
> 2| 
3| block content 
4| h1 my titllllllllle 
5| p some text unexpected token "indent" 

http://*/test-child

我得到這個:

extends test-layout 

nothing 

nothing 

任何人都可以幫忙嗎?

謝謝!

回答

1

起初,您可以更正test-grandson.jadeextendextends)中的類型。然而,新的Jade版本應該處理這個問題。你正在使用哪個版本?

我在Windows 7上運行64位玉0.34.1,得到了這樣的結果,是我所期待的,其中:

<html> 
    <head> 
    <title>My Site - </title> 
    </head> 
    <body> 
    <div class="sidebar"> 
     <li><b>this is grandson sidebar</b></li> 
    </div> 
    <div class="primary"> 
     <li><b>this is grandson primary</b></li> 
    </div> 
    <div id="footer"> 
     <p>some footer content</p> 
    </div> 
    </body> 
</html> 

的問題起源於亞倫的文件的編碼。他的文件用UTF-8編碼,並且由他的編輯附加了UTF-8 BOM Mark。顯然,Jade不能很好地處理這個標記,儘管這不是特別的Jade問題,但更多的是Node.js問題。

您可以通過在有問題的文件的開頭添加空行來獲得解決方法。否則,您將不得不尋找一種方法從您的文件中去除BOM標記,這不是微不足道的。

(已經有一個issue on the Jade GitHub repo

+0

謝謝Zeeker,我改變擴展到擴展,但仍然有問題。 我試圖從0.33。*更新玉到0.34.1,仍然失敗 – aaron

+0

在哪個環境中你使用Jade?我寫了一個小型的快速應用程序,它繼續正常工作。 –

+0

我使用win7 x64,表達3.3.4,玉0.34.1。我也創建了一個小應用程序,你能幫我看看嗎?我將它上傳到了skydrive公共文件夾:https://skydrive.live.com/redir?resid=AB903786598CFD70!105&authkey=!AJuqPRyLClvxZBo,我在app.js中添加了一個類似於'app.get('/ test' ,函數(req,res)res.render('test'); });',這就是爲什麼它失敗了嗎? – aaron