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
Dans l'utilisation de Jade | quand commence avec seulement du texte
mal ->
td
{{anything}}
br
Hello
correct ->
td
| {{anything}}
br
| Hello
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)}
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)}
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".
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
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
/ /