缩进无效。玉模板

时间:2013-12-02 21:13:47

标签: node.js express pug

我知道我可以使用标签或空格,但不能同时使用两者。但我找不到无效缩进的位置。试过不同的变化。但我没有成功。添加

后我得到了异常
- if (error)
p= error

所以我的代码如下所示:

!!!
html
head
    title= title
    link(rel='stylesheet', href='/stylesheets/#{stylesheet}.css')
    link(rel='stylesheet', href='/stylesheets/bootstrap.min.css')
body
    .container
        .row
            .col-md-4
            .col-md-4
                .well
                    - if (error)
                        p= error
                    form(role='form',action='sessions', method='post')
                        .form-group
                            label(for='Email') Eposta Adresi
                            input#Email.form-control(type='email',name='user[email]',placeholder='E-posta adresi')
                        .form-group
                            label(for='Password') Şifre
                            input#Password.form-control(type='password',name='user[password]', placeholder='Şifre')
                        button.btn.btn-default(type='submit') Giriş

    script(type='text/javascript', src='/javascripts/jquery-1.10.2.min.js')
    script(type='text/javascript', src='/javascripts/bootstrap.min.js')

完全例外:

12| .well
13| - if (error)
> 14| p= error
15| form(role='form',action='sessions', method='post')
16| .form-group
17| label(for='Email') Eposta Adresi
Invalid indentation, you can use tabs or spaces but not both
at Object.Lexer.indent (C:\Nodejs\NodejsBlog\node_modules\jade\lib\lexer.js:691:15)
at Object.Lexer.next (C:\Nodejs\NodejsBlog\node_modules\jade\lib\lexer.js:789:15)
at Object.Lexer.lookahead (C:\Nodejs\NodejsBlog\node_modules\jade\lib\lexer.js:122:46)
at Object.Parser.lookahead     (C:\Nodejs\NodejsBlog\node_modules\jade\lib\parser.js:116:23)
at Object.Parser.parseCode   (C:\Nodejs\NodejsBlog\node_modules\jade\lib\parser.js:311:17)
at Object.Parser.parseExpr (C:\Nodejs\NodejsBlog\node_modules\jade\lib\parser.js:225:21)
at Object.Parser.block (C:\Nodejs\NodejsBlog\node_modules\jade\lib\parser.js:593:25)
at Object.Parser.tag (C:\Nodejs\NodejsBlog\node_modules\jade\lib\parser.js:722:26)
at Object.Parser.parseTag (C:\Nodejs\NodejsBlog\node_modules\jade\lib\parser.js:625:17)
at Object.Parser.parseExpr (C:\Nodejs\NodejsBlog\node_modules\jade\lib\parser.js:199:21)

需要建议。

3 个答案:

答案 0 :(得分:8)

这是vim向我展示:set list

的内容
▸ ▸ ▸ ▸ .col-md-4¬
▸ ▸ ▸ ▸ .col-md-4¬
▸ ▸ ▸ ▸ ▸ .well¬
▸ ▸ ▸ ▸ ▸ ▸ - if (error)¬
    ▸ ▸ ▸ ▸ ▸   ▸ p= error¬
▸ ▸ ▸ ▸ ▸ ▸ form(role='form',action='sessions', method='post')¬

(三角形是标签)

所以你要在违规行上混合标签和空格。

答案 1 :(得分:1)

您还可以使用Notepad++显示标签并将其更改为空格以更正缩进问题。

我有node / npm消息告诉我,我的jade引擎的Parser和Lexer不喜欢我的layout.jade代码,因为我从第8行开始使用空格和制表符的缩进不一致。并且Lexer和Parser对象抛出了该错误(分别在lexer.js和parser.js中)。所以我打开了问题文件 - 即layout.jade并更正了缩进。这是我在开头得到的npm错误信息:

<pre>
Error: C:\Users\tester_Arch_GitHub\loc8r2mvc\app_server\views\layout.jade:8
   6|     title= title
   7|     link(rel='stylesheet', href='/bootstrap/css/amelia.bootstrap.css')
 > 8| link(rel='stylesheet', href='/stylesheets/style.css')
   9|   body
   10|     block content
   11|

Invalid indentation, you can use tabs or spaces but not both
   at Object.Lexer.indent (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\lexer.js:790:15)
   at Object.Lexer.next (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\lexer.js:941:15)
   at Object.Lexer.lookahead (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\lexer.js:113:46)
   at Parser.lookahead (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\parser.js:102:23)
   at Parser.peek (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\parser.js:79:17)
   at Parser.tag (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\parser.js:773:22)
   at Parser.parseTag (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\parser.js:759:17)
   at Parser.parseExpr (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\parser.js:211:21)
   at Parser.block (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\parser.js:729:25)
   at Parser.tag (C:\Users\tester_Arch_GitHub\loc8r2mvc\node_modules\jade\lib\parser.js:838:24)
</pre>

所以我使用了我的普通旧编辑器Notepad ++:在Settings / Preferrences / Tab Setting / Javascript - &gt;下;选择空间替换。要么 。您只需使用箭头键将光标移动到每一行,只需检测选项卡并用空格替换它们!刷新URL。你会看到压痕问题消失了!

答案 2 :(得分:0)

您可以使用Sublime Text编辑器来解决此问题:

  1. 在高级文本编辑器中打开代码
  2. 点击视图
  3. 点击缩进
  4. 最后单击将缩进转换为空格