Включение файла мопса приводит к ошибке, но Jade работает нормально

Здесь возникает странная проблема. У меня есть довольно простое включение Jade / Pug:

extends base.pug

block vars
    - var title = 'Home'

block body
    header
        include ./includes/header.pug

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

TypeError: Cannot read property 'replace' of undefined
   at before (/var/node/website/node_modules/pug-linker/index.js:104:48)
   at walkAST (/var/node/website/node_modules/pug-walk/index.js:13:26)
   at /var/node/website/node_modules/pug-walk/index.js:21:16
   at Array.map (native)
   at walkAST (/var/node/website/node_modules/pug-walk/index.js:20:29)
   at walkAST (/var/node/website/node_modules/pug-walk/index.js:33:21)
   at /var/node/website/node_modules/pug-walk/index.js:21:16
   at Array.map (native)
   at walkAST (/var/node/website/node_modules/pug-walk/index.js:20:29)
   at /var/node/website/node_modules/pug-walk/index.js:21:16
   at Array.map (native)
   at walkAST (/var/node/website/node_modules/pug-walk/index.js:20:29)
   at applyIncludes (/var/node/website/node_modules/pug-linker/index.js:102:10)
   at link (/var/node/website/node_modules/pug-linker/index.js:21:9)
   at compileBody (/var/node/website/node_modules/pug/lib/index.js:84:11)
   at Object.exports.compile (/var/node/website/node_modules/pug/lib/index.js:164:16)

Но изменив это на:

extends base.pug

block vars
    - var title = 'Home'

block body
    header
        include ./includes/header.jade

Работает отлично. Содержимое header.jade и header.pug точно такое же, поэтому я немного озадачен здесь. Некоторая помощь будет оценена.

Спасибо,

PS: Поиск действительно показал: https://github.com/pugjs/pug-linker/issues/13 - кажется, ошибка, но не уверен, как это может быть.

2 ответа

Решение

Похоже, мопс на самом деле не готов к прайм-тайму! С нетерпением ждем, когда это произойдет, но использование jade вместо pug решит проблему, просто переименуйте все в .jade,

Одно из главных изменений в переходе от Jade к Pug - это то, что вы больше не можете интерполировать переменные. Раньше вы могли (и поощряли) использовать #{something} внутри другой строки, но теперь вам рекомендуется использовать обычные переменные JavaScript.

например, это

a(href="#{link}")
a(href='before#{link}after')

теперь должен стать

a(href=link)
a(href=`before${link}after`) //(on Node.js/io.js ≥ 1.0.0)
a(href='before' + link + 'after') //(everywhere)

Источник: отслеживание проблемы с критическими изменениями.

Другие вопросы по тегам