2014-03-04 20 views
31

我在做一個基於快速的Web應用程序,每次有人訪問這個文件玉我得到以下錯誤:玉 - 文玉文件的行X之前丟失的空間

Warning: missing space before text for line 28 of jade file "C:\x\app\view 
s\login.jade" 

也吐出它了幾次發生的每一行。

我看了看這些行,我無法弄清楚它在抱怨什麼。

我的玉文件如下:

doctype html 
html 
    head 
     meta(charset='utf-8') 
     link(href='style.css', rel='stylesheet') 
    body 
     .wrapper 
      header.header 
       a(href="/", style="color: #000000;") 
        h1(style="position: absolute; top: 30px;") Hello 
      .middle 
       .container 
        main.stream 
         p Login 
        main.name 
         form(id="login", method="POST", action="/login") 
          table(cellspacing="15") 
           tr 
            td Email 
            td 
             input(type='email', name='email' style="width: 250; height: 18px; border: 1px solid #999999; padding: 5px;") 
           tr 
            td Password 
            td 
             input(type='password', name='password' style="width: 250; height: 18px; border: 1px solid #999999; padding: 5px;") 
           tr 
            td 
             input(style="width:75px;height:30px;", type="submit", value="Login")  

       aside.left-sidebar 
        main.dir 
         a(href="/") Home 
        main.dir 
         a(href="/signup") Register       
     footer.footer 
      h3 Hello 
      p This is a footer 
+0

我不認爲這是什麼大不了的事,但是你用逗號隔開沒有逗號的混合在你的元素語法中。 '輸入(類型= '密碼',名字= '密碼' 風格= 「寬度:250;高度:18像素;邊界:1px的固體#999999;填充:5px的;」)' VS '輸入(式=「width:75px; height:30px;」,type =「submit」,value =「Login」)' –

+0

@WaynePincence事實上,我不知道我怎麼沒聽到,謝謝! – novs12

回答

3

我把你的代碼並複製到記事本++與View空白上。

線28具有在它的端部4個多餘的空格(示爲虛線這裏):

input(style="width:75px;height:30px;", type="submit", value="Login")---- 

此外,線34具有幾個額外的空格後「註冊」以及。

0

或者您中央社如果你有這樣的事情有這個問題..

\t \t p Foo 
\t \t p \t Foo 

我已經所以我們無論在技術上還是右上面的回答也產生這個錯誤。 ;)

另外,如果你使用vim。您可以通過執行看到空間,

:set hlsearch 
// 
1

這也可以通過使用製表符而不是空格

div(attr="val")[\t]text 

\t字符的行

+0

在崇高的文本 - 單擊右下角的「空格」菜單,然後「將縮進轉換爲空格」... – christophersw

22

的兩端,我得到這個錯誤時造成的使用!{}語法並有額外的回報:

.row 
    !{marked(val)} 

應該是:

.row !{marked(val)} 
+0

是的,我也有一個腳本標記,其中只包含一行javascript縮進後的錯誤。似乎你必須把它放在同一條線上。謝謝 - 你的小費給我解決了。 – scipilot

37

在Jade中使用|當只顯示文本開始

錯誤 - >

td 
    {{anything}} 
    br 
    Hello 

正確 - >

td 
    | {{anything}} 
    br 
    | Hello 
+1

**需要補充的一件事:**如果您有一段以'script.'開頭的腳本,那麼報告的問題行將會出錯:此類腳本的所有行都不計算在內! – ishahak

+0

感謝@ishahak!我有一種感覺,行號不匹配,因爲它給了我一個空行這個錯誤。有點仔細計算導致了我的問題。 – MindJuice

8

爲什麼連當你所有的玉石似乎有效在這個github issue高亮顯示出現此問題。 從原來的問題本身報價:

The warning is because !{} and #{} are for interpolation within text. i.e. you have to be in(side) a text (block) to start with. You should use = and != to buffer JavaScript expressions.

這意味着!{}#{}只是如果你是一個現有的文本塊內插使用。像咖啡腳本#{}插在這裏:

a = "Hi #{name}!" 

轉化爲(在JavaScript)

a = "Hi " + name + "!"; 

因此,在玉太,你將使用!{}!{}正在運行的文本內(一個段落或一個字符串)。要僅從變量輸出一個字符串而不顯式啓動一個新的文本塊,您可以使用=!=

.row 
    != marked(val) 
.another-row 
    = marked(val) 

另一種方法是,以明確開始一個新的文本塊像這樣:

.row 
    | !{marked(val)} 

.another-row 
    | #{marked(val)} 
+0

這是最好的答案,因爲它解釋了爲什麼Jade的行爲如此。 –

+0

我不知道這是如何涉及到有問題的代碼,或者缺失空間的數字。 –

+0

@DrazenBjelovuk換行符開始一個新塊,並且插值不能按照您期望的方式工作。雖然這個問題沒有這種情況,但是由於錯誤的插值,jade拋出了* same *錯誤,這個答案試圖解釋這個錯誤。如果你按照github問題的鏈接,你會得到更多的信息。 –