Интегрируйте приложение express.js и панель документов (обмен макетами)

Я пытаюсь интегрировать одно приложение Express с Docpad. Что мне больше всего нужно, так это совместное использование макетов между моими статическими страницами и представлениями Express.

В процессе я следую этим инструкциям вопроса 16332833, с:

var docpadInstanceConfiguration = {
    action: 'generate',
    env: 'static'
};
require('docpad').createInstance(docpadInstanceConfiguration, function(err,docpadInstance){
    if (err)  return console.log(err.stack);
    // ...
});

Я получаю следующую ошибку:

info: Generating...
notice: DocPad is currently running without any plugins installed. You probably want to install some: http://docpad.org/plugins

TypeError: path must be a string
    at fs.exists (fs.js:166:11)
    at Task.method (/Users/../node_modules/docpad/node_modules/safefs/out/lib/safefs.js:183:14)
    at ambi (/Users/../node_modules/docpad/node_modules/ambi/out/lib/ambi.js:22:16)
    at /Users/../node_modules/docpad/node_modules/taskgroup/out/lib/taskgroup.js:117:19
    at b (domain.js:183:18)
    at Domain.run (domain.js:123:23)
    at Task.fire (/Users/../node_modules/docpad/node_modules/taskgroup/out/lib/taskgroup.js:116:21)
    at process._tickCallback (node.js:415:13)
    at Function.Module.runMain (module.js:499:11)
    at startup (node.js:119:16)
    at node.js:901:3

без опций и var docpadInstanceConfiguration = {}; ошибок нет:

info: Welcome to DocPad v6.52.1
info: Contribute: http://docpad.org/docs/contribute
info: Plugins: cleanurls, coffeescript, downloader, eco, less, livereload, marked, partials, related, stylus, text
info: Environment: development

Любая идея для получения общих макетов между docpad и экспресс-представлениями и, например, для защиты csrf? (Я использую ectjs для своих представлений, он совместим с эко)

Спасибо


person bolila    schedule 10.09.2013    source источник
comment
Я могу воспроизвести, определенно похоже на ошибку, посмотрим, что я могу сделать с исправлением. Спасибо за сообщение.   -  person balupton    schedule 10.09.2013


Ответы (1)


Оказывается, вам нужны действия load и ready перед generate, например:

var docpadInstanceConfiguration = {
    action: 'load ready generate',
    env: 'static'
};
require('docpad').createInstance(docpadInstanceConfiguration, function(err,docpadInstance){
    if (err)  return console.log(err.stack);
    // ...
});

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

var docpadInstanceConfiguration = {
    env: 'static'
};
require('docpad').createInstance(docpadInstanceConfiguration, function(err,docpadInstance){
    if (err)  return console.log(err.stack);
    var generateOpts = {};
    docpadInstance.action('generate', generateOpts, function(err,result){
        if (err)  return console.log(err.stack);
        // ...
    });
});
person balupton    schedule 10.09.2013