首页 文章

AspNetCore NodeServices抛出NodeInvocationException

提问于
浏览
1

我正在使用NodeServices在AspNetCore应用程序中创建PDF . 应用程序在本地计算机上运行正常,但在 生产环境 中部署时,在调用pdf函数时,我收到以下错误:

错误:在Process.ChildProcess._handle.onexit(internal / child_process.js)的_errnoException(util.js:1022:11)处生成D:\ home \ site \ wwwroot \ node_modules \ phantomjs \ lib \ phantom \ bin \ phantomjs ENOENT :190:19)在onErrorNT(internal / child_process.js:372:16)处于_combinedTickCallback(internal / process / next_tick.js:138:11)at process._tickCallback(internal / process / next_tick.js:180:9) Microsoft.AspNetCore.NodeServices.HostingModels.NodeInvocationException:渲染报告期间出错:spawn D:\ home \ site \ wwwroot \ node_modules \ phantomjs \ lib \ phantom \ bin \ phantomjs ENOENT错误:spawn D:\ home \ site \ wwwroot \ node_modules \ phantomjs \ lib \ phantom \ bin \ phantomjs在onErrorNT上的Process.ChildProcess._handle.onexit(internal / child_process.js:190:19)的_errnoException(util.js:1022:11)ENOENT(internal / child_process.js: 372:16)在process._tickCallback(internal / process / next_tick.js:180:9)的_combinedTickCallback(internal / process / next_tick.js:138:11)

我确认所有文件都在正确的位置 . 部署中存在 node_modules .

Azure上的节点版本:8.9.4

生成PDF的代码:

module.exports = function (callback, html) {
var jsreport = require('jsreport-core')();

jsreport.init().then(function () {
    return jsreport.render({
        template: {
            content: html,
            engine: 'jsrender',
            recipe: 'phantom-pdf'
        }
    }).then(function (resp) {
        callback(/* error */ null, resp.content.toJSON().data);
    }).catch(function (e) {
        callback(/* error */ e, null);
    });
}).catch(function (e) {
    callback(/* error */ e, null);
});
};

2 回答

  • 0

    问题在于安装Node包 . 我在Azure上使用Hosted Linux来构建解决方案 . 切换到托管VS2017构建,一切正常 . https://github.com/pofider/phantom-html-to-pdf/issues/68

  • 0

    如果您将Azure App Service与免费计划一起使用,则无法在服务器上呈现pdf . 这是因为该服务在沙箱中运行,因此无法运行第三方可执行文件,如node.exe . 您需要将服务计划升级为“基本”或更高版本 .

相关问题