我正在制作基于Express的Web应用程序,每当有人访问此jade文件时,我都会收到以下错误:
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 :(得分:41)
在玉器中使用|什么时候开始只有文字
错误 - >
td
{{anything}}
br
Hello
正确 - >
td
| {{anything}}
br
| Hello
答案 1 :(得分:24)
使用!{}语法时出现此错误,并有额外的回复:
.row
!{marked(val)}
应该是:
.row !{marked(val)}
答案 2 :(得分:9)
为什么会出现此问题,即使您的所有jade 似乎有效,也会在此github issue中突出显示。 引用原始问题本身:
警告是因为
!{}
和#{}
用于文本内插。即你必须在(侧面)文本(块)开始。您应该使用=
和!=
来缓冲JavaScript表达式。
这意味着只有在现有文本块中进行插值时才会使用!{}
和#{}
。像咖啡脚本#{}
插值这样的东西:
a = "Hi #{name}!"
转换为(在javascript中)
a = "Hi " + name + "!";
因此,在Jade中,您也会在正在运行的文本(段落或字符串)中使用!{}
和!{}
。要仅从变量输出字符串而不显式启动新的文本块,您可以使用=
或!=
。
.row
!= marked(val)
.another-row
= marked(val)
另一种方法是显式地启动一个新的文本块,如下所示:
.row
| !{marked(val)}
.another-row
| #{marked(val)}
答案 3 :(得分:3)
我把你的代码复制到Notepad ++中并使用View Whitespace。
第28行末尾有4个额外的空格(在这里显示为破折号):
input(style="width:75px;height:30px;", type="submit", value="Login")----
另外,第34行在" Register"之后有几个额外的空格。同样。
答案 4 :(得分:1)
这也可能是因为使用制表符而不是空格
div(attr="val")[\t]text
或行尾<{1}}个字符
答案 5 :(得分:0)
如果你有这样的话,你可以解决这个问题..
\t \t p Foo
\t \t p \t Foo
我有上面的回答也会产生这个错误,所以我们在技术上都是正确的。 ;)
另外,如果你使用vim。你可以通过这样做来看空间,
:set hlsearch
/ /