我通过请求生成 PDF 文件:
app.get('/report/:listId', function(req, res) {
const path = require("path");
const ejs = require("ejs");
const pdf3 = require('html-pdf');
var dayTitle=dateFormat(new Date(), "dd.mm.yyyy");
pdf.getData(req.params.listId)
.then(r => {
ejs.renderFile(path.join(__dirname, "/fn/report-template.ejs"), {
list: r.list,
}, (err, data) => {
if (err) {
res.send(err);
} else {
let options = {
"height": "11.25in",
"width": "8.5in",
"header": {
"height": "20mm"
},
"footer": {
"height": "20mm",
},
};
pdf3.create(data, options).toFile(`${dayTitle}.pdf`, function (err, data) {
if (err) {
res.send(err);
} else {
res.sendFile(`${__dirname}/${dayTitle}.pdf`);
}
});
}
});
});
});
工作一次。但大多数情况下节点只是重新启动(PM2 --watch),并且没有错误。文件 0 字节。同时,如果只是简单的通过控制台(nodepdf.js)运行相同的代码,文件总是无误的生成。这就像网络服务器正在中止请求,我不明白......
也许您的 pdf 已保存到磁盘,并且带有 --watch 参数的 pm2 监视文件更改并看到文件已添加/更改并重新启动脚本。尝试,使用
ignore_watch
pm2 watch 并重新启动选项