2013-11-14 2 views
1

Я пытаюсь использовать docpad для обработки рендеринга в экспресс-приложении, но при попытке получить доступ к /contact запрос просто висит, казалось бы, на неопределенный срок.Использование механизма рендеринга Docpad в экспресс-приложении

Вот мое заявление:

var express = require('express'); 
var http = require('http'); 
var app = express(); 
var cons = require('consolidate'); 

var server = http.createServer(app).listen(process.env.PORT || 9778); 

app.use(app.router); 

// Add DocPad to our Application 
var docpadInstanceConfiguration = { 
    // Give it our express application and http server 
    serverExpress: app, 
    serverHttp: server, 

    // Tell it not to load the standard middlewares (as we handled that above) 
    middlewareStandard: false 
}; 

var docpadInstance = require('docpad').createInstance(docpadInstanceConfiguration, function(err){ 
    if (err) return console.log(err.stack); 

    // Tell DocPad to perform a generation, extend our server with its routes, and watch for changes 
    docpadInstance.action('generate server watch', docpadInstanceConfiguration, function(err){ 
     if (err) return console.log(err.stack); 
    }); 
}); 

app.get('/contact', function(req, res) { 
    req.templateData = { 
     weDidSomeCustomRendering: true 
    }; 
    var d = docpadInstance.getFile({relativePath:'hello.html.md'}); 
    docpadInstance.serveDocument({document: d, req: req, res: res}, function(){}); 
}); 

Это в значительной степени копируются прямо из документации, но не работает. Есть идеи?

ответ

1

Ключ должен пройти next:

app.get('/contact', function(req, res, next) { 
    req.templateData = { 
     weDidSomeCustomRendering: true 
    }; 
    var d = docpadInstance.getFileAtPath('pages/hello.html'); 
    docpadInstance.serveDocument({document: d, req: req, res: res}, next); 
}); 

https://github.com/bevry/docpad/issues/706

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