HTTP 触发器上的 Azure Function App jsreport 不起作用

Azure Function App jsreport on HTTP trigger not working

我正在尝试让 jsreport 在 Azure Functions 应用程序中工作。我已经安装了所有需要的包,它们是 jsreport-core jsreport-render jsreport-phantom-js,它们似乎都运行良好。我的代码:

module.exports = function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');

if (req.query.content || (req.body && req.body.content)) {
    var pdf = renderPdf(req.query.content || req.body.content, {})
    context.res = {
        status: 200,
        body: { data: pdf }
    };
}
else {
    context.res = {
        status: 400,
        body: "Please pass the content on the query string or in the request body"
    };
}
context.done();};

function renderPdf(content, data){
var jsreport = require('jsreport-core')();

var promise = jsreport.init().then(function () {
    return jsreport.render({
        template: {
            content: content,
            engine: 'jsrender',
            recipe: 'phantom-pdf'
        },
        data: data
    });
});
return Promise.resolve(promise);}

我以这个 post 为例:Export html to pdf in ASP.NET Core

我的最终目标是从 asp.net 核心调用这个函数。谢谢您的帮助。

您的 renderPdf 函数 returns 一个承诺,您没有正确使用它。您不能只将承诺分配给结果主体,而是将主体分配给 then:

if (req.query.content || (req.body && req.body.content)) {
    renderPdf(...).then(pdf => {
        context.res = {
            status: 200,
            body: { data: pdf }
        };
        context.done();
    });
}
else {
    context.res = {
        status: 400,
        body: "Please pass the content on the query string or in the request body"
    };
    context.done();
}