Невозможно включить файл относительного пути с помощью шаблона Jade
Я получаю следующую ошибку, когда я пытаюсь включить файл в той же папке:
the "filename" option is required to use "include" with "relative" paths
есть два файла:
.Джейд!--5-->list_of_items.Джейд!--5-->
.content-container
.row
.col-lg-10.col-lg-offset-1.col-xs-12
.row
.col-xs-3
include list_of_items
.col-xs-9
include content
Я попытался использовать базовый путь, но затем получил следующую ошибку:
the "basedir" option is required to use "include" with "absolute" paths
код для базового пути выглядит следующим образом:
.content-container
.row
.col-lg-10.col-lg-offset-1.col-xs-12
.row
.col-xs-3
include /User/project/list_of_items
.col-xs-9
include content
Я в полном недоумении. Есть ли где-то еще место, которого мне не хватает? Он кажется, это должно быть что-то очень простое. Что я упускаю?
2 ответов
вы используете jade.compile()
, да? Как говорится в сообщении об ошибке, вы не передав . Поскольку вы даете только строку для компиляции в Jade, она не знает, где искать включенные файлы.
пример, где сценарий и файлы jade находятся в одной папке. The index.jade
файл включает в себя другой файл с помощью include foo
:
var jade = require('jade'),
fs = require('fs'),
path = require('path');
var fn = jade.compile(fs.readFileSync('index.jade', 'utf-8'), {
filename: path.join(__dirname, 'index.jade'),
pretty: true
});
console.log(fn());
или с "абсолютными путями", которые в Jade являются абсолютными по отношению к данному basedir
вы сделали бы следующий. The index.jade
файл теперь включает в себя тот же файл, но с использованием абсолютного пути, т. е. include /foo
:
var jade = require('jade'),
fs = require('fs');
var fn = jade.compile(fs.readFileSync('index.jade', 'utf-8'), {
basedir: __dirname,
pretty: true
});
console.log(fn());
для всех параметров см. API docs.
вы можете отобразить динамический шаблон, используя функцию в локалиях. Этот метод также поддерживает фильтры.
Джейд файлом
+render('contents/index.md', {filter:'marked'});
Залпом Трубы
.pipe(jade({
locals: {
render: function (filePath, options) {
return jade.render(`include${options.filter ? (':' + options.filter) : ''} ${filePath}`, {
filename: pathToJadeFileDir + '/something-not_important'
});
}
}
}))