web-dev-qa-db-fra.com

Jade - espace manquant avant le texte pour la ligne x du fichier jade

Je crée une application Web basée sur Express et chaque fois que quelqu'un visite ce fichier jade, j'obtiens l'erreur suivante:

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

Il le recrache également plusieurs fois pour chaque ligne sur laquelle il se produit.

J'ai jeté un œil à ces lignes et je n'arrive pas à comprendre de quoi il se plaint.

Mon fichier jade est le suivant:

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
35
novs12

Dans l'utilisation de Jade | quand commence avec seulement du texte

mal ->

td
  {{anything}}
  br
  Hello

correct ->

td
  | {{anything}}
  br
  | Hello
41
Jesus

J'ai eu cette erreur lors de l'utilisation de la syntaxe! {} Et j'ai eu un retour supplémentaire:

.row 
  !{marked(val)}

devrait être:

.row !{marked(val)}
24

Pourquoi ce problème se produit même lorsque tout votre jade semble valide est mis en évidence dans ce problème github . Citant le numéro d'origine lui-même:

L'avertissement est dû au fait que !{} et #{} sont pour l'interpolation dans le texte. c'est-à-dire que vous devez être dans (côté) un texte (bloc) pour commencer. Tu devrais utiliser = et != pour tamponner les expressions JavaScript.

Cela signifie que le !{} et #{} ne doit être utilisé que si vous interpolez dans un bloc de texte existant. Quelque chose comme le script du café #{} interpolation ici:

a = "Hi #{name}!"

se traduit par (en javascript)

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

Ainsi, dans Jade aussi, vous utiliserez le !{} et !{} dans un texte en cours d'exécution (un paragraphe ou une chaîne). Pour simplement sortir une chaîne à partir d'une variable sans démarrer explicitement un nouveau bloc de texte, vous utiliseriez = ou !=.

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

Une alternative serait de explicitement commencer un nouveau bloc de texte comme suit:

.row 
  | !{marked(val)}

.another-row 
  | #{marked(val)}
9
kumarharsh

J'ai pris votre code et copié dans Notepad ++ avec View Whitespace activé.

La ligne 28 dispose de 4 espaces supplémentaires à la fin de celui-ci (représentés par des tirets ici):

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

En outre, la ligne 34 a également plusieurs espaces supplémentaires après "Register".

3
Wayne Pincence

cela peut également être dû à l'utilisation d'onglets au lieu d'espaces

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

ou par \t caractères à la fin des lignes

1
jascha

Sinon, vous pouvez avoir ce problème si vous avez quelque chose comme ça ..

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

La réponse ci-dessus a également généré cette erreur, nous avons donc tous les deux techniquement raison. ;)

Aussi, si vous utilisez vim. Vous pouvez voir les espaces en faisant,

:set hlsearch
/ /
0
Evan Carroll