2013-12-23 1 views
9

Когда я загружаю мой экспресс сайт я получаю следующее сообщение об ошибке:вход закрывающиеся и не должны иметь содержание

Экспресс 500 Ошибка: /app/views/index.jade:114 112 | td 2 113 | td 4 года> 114 | вход сам закрывается и не должен содержать контент.

112| td 2 
113| td 4 years 
> 114| 
input is self closing and should not have content. 
at Object.Compiler.visitTag (/app/node_modules/jade/lib/compiler.js:434:15) 
at Object.Compiler.visitNode (/app/node_modules/jade/lib/compiler.js:210:37) 
at Object.Compiler.visit (/app/node_modules/jade/lib/compiler.js:197:10) 
at Object.Compiler.visitBlock (/app/node_modules/jade/lib/compiler.js:278:12) 
at Object.Compiler.visitNode (/app/node_modules/jade/lib/compiler.js:210:37) 
at Object.Compiler.visit (/app/node_modules/jade/lib/compiler.js:197:10) 
at Object.Compiler.visitTag (/app/node_modules/jade/lib/compiler.js:443:12) 
at Object.Compiler.visitNode (/app/node_modules/jade/lib/compiler.js:210:37) 
at Object.Compiler.visit (/app/node_modules/jade/lib/compiler.js:197:10) 
at Object.Compiler.visitBlock (/app/node_modules/jade/lib/compiler.js:278:12) 

Это не отображается при запуске локально с запуском мастера, только когда он находится на сервере.

+1

Вы можете также включать в себя фрагмент 'index.jade', особенно вокруг линий 112-114? Ошибка предполагает, что представление пытается создать элемент '' с содержимым (как в ' content'), что является недопустимой разметкой. –

+0

'таблица # деятельность (имя = "активность") tr.sell тд 2 TD 4 –

ответ

15

Похоже, что у вас есть контент внутри ваших тегов ввода. В HTML теги ввода не могут содержать контент,
, поэтому вы должны удалить любые пробелы или символы, следующие за входными тегами в вашем нефритовом файле.
Ex:
input(type="text",name="whatever") something
должен быть
input(type="text",name="whatever",value="something")

0

У меня была аналогичная проблема, я решил с этим:

div 
    +inputWithTextContent('whatever', 'something') 


mixin inputWithTextContent(name, message) 
    !='<input type="text" name="'+name+'">'+message+'</input>' 
1

Иногда ответ немного Tricker, чем просто некоторое содержание после тега на одной строке (например, несколько пробелов). Следите за тем, чтобы строка, следующая за входным тегом, была с пометкой по ошибке!

0

После того, как я столкнулся с той же ошибкой, я проверял строку шаблона нефрита, помеченную в отчете об ошибке. На самом деле это содержало определение ввода, но это определение было прекрасным, поскольку не было никаких пробелов и печатаемого контента. Следующая строка была еще менее отступом (два уровня для начала другой строки формы), и, следовательно, определенно не было содержимого для ввода элемента, определенного в отмеченной строке.

Однако был еще один ввод, следующий за этим отмеченным несколькими строками вниз по шаблону. И этот элемент ввода действительно имел некоторый подчиненный контент. Удаление содержимого там фиксировало несколько ложных срабатываний «здесь».

0

Другим решением является создание метки после ввода, а затем ее отображение в строке. Это будет сидеть над этикеткой вдоль элемента управления. Вот как я решил проблему с помощью флажка в jade.

JADE (Bootstrap):

 .checkbox 
     label 
     input(type='checkbox', value='remember-me',) 
     label.inlineLabel Remember me 

SASS:

label.inlineLabel 
    display: inline 
+0

' летами могли бы вы развить больше ваше решение это не ясно. Спасибо – Teocci

+0

Обновлен мой ответ, чтобы включить фрагменты кода. Надеюсь это поможет. –

Смежные вопросы