Ответ 1
В использовании Jade | когда начинаются только текст
Неправильно →
td
{{anything}}
br
Hello
правильный →
td
| {{anything}}
br
| Hello
Я создаю веб-приложение на основе Express и каждый раз, когда кто-то посещает этот нефритовый файл, я получаю следующую ошибку:
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
В использовании Jade | когда начинаются только текст
Неправильно →
td
{{anything}}
br
Hello
правильный →
td
| {{anything}}
br
| Hello
Я получил эту ошибку при использовании синтаксиса! {} и получил дополнительный возврат:
.row
!{marked(val)}
должен быть:
.row !{marked(val)}
Почему эта проблема возникает, даже когда весь ваш нефрит кажется действительным, выделяется в этой проблема github. Цитата из самой оригинальной проблемы:
Предупреждение связано с тем, что
!{}
и#{}
предназначены для интерполяции внутри текста. то есть вы должны быть в (стороне) текст (блок) для начала. Вы должны использовать=
и!=
для буферизации выражений JavaScript.
Это означает, что !{}
и #{}
должны использоваться только при интерполяции внутри существующего текстового блока. Что-то вроде кофе- script #{}
интерполяция здесь:
a = "Hi #{name}!"
переводится на (в javascript)
a = "Hi " + name + "!";
Таким образом, в Jade вы также будете использовать !{}
и !{}
в текущем тексте (абзац или строку). Чтобы просто выводить строку из переменной без явного запуска нового текстового блока, вы должны использовать =
или !=
.
.row
!= marked(val)
.another-row
= marked(val)
Альтернативой было бы явно начать новый текстовый блок следующим образом:
.row
| !{marked(val)}
.another-row
| #{marked(val)}
Я взял ваш код и скопировал его в Notepad ++ с помощью View Whitespace on.
В строке 28 имеется 4 дополнительных пробела в конце (показано здесь как дефис):
input(style="width:75px;height:30px;", type="submit", value="Login")----
Кроме того, строка 34 имеет несколько дополнительных пробелов после "Регистрация".
это также может быть вызвано использованием вкладок вместо пробелов
div(attr="val")[\t]text
или \t
на концах строк
Кроме того, у вас есть эта проблема, если у вас есть что-то вроде этого.
\t \t p Foo
\t \t p \t Foo
У меня был вышеупомянутый ответ, который также породил эту ошибку, поэтому мы оба технически правы.;)
Кроме того, если вы используете vim. Вы можете видеть пробелы, делая
:set hlsearch
/ /