错误:在sendFile()上写EPIPE?

时间:2015-06-03 08:45:58

标签: javascript node.js pdf sendfile

我使用html-pdf模块生成pdfs,使用以下代码:

var ejs = require('ejs');
var fs = require('fs');
var pdf = require('html-pdf');

var build = function (template, data) {
    var html = ejs.compile(fs.readFileSync(template, 'utf8'));
    html = html(data);

    return html;
}

pdf.create(build('views/print_templates/pm_export_pdf.ejs',
                {rows:resolve(rows, user_rows, table_rows,
                 subproject_rows, milestone_rows, release_rows)}), pdfconfig)
.toFile(function (err, pdf) {
    if (err)
        return console.log(err); 

    res.sendFile(pdf.filename);
});

PDFconfig是html-pdf的配置变量。 resolve是我自己的数据库解析函数,在这个故事中并不是很相关。

当我在MacBook Pro上的OSX 10.10本地运行时,这就像一个魅力。但是当我在我的服务器(centOS)上运行它时,我收到以下错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: write EPIPE
    at errnoException (net.js:904:11)
    at Object.afterWrite (net.js:720:19)

这可能与权限有关吗?我不确定自己做错了什么..

我运行以下版本:

  • 节点:0.10.31
  • Express:4.10.7
  • html-pdf:1.2.0

1 个答案:

答案 0 :(得分:1)

为了将来目的:

我认为我必须重建我的节点模块。我想我不小心将node-modules文件夹复制到了centOS上的测试服务器上,而phantomjs已经为OSX建立了它的依赖关系。我还不确定它是如何将通讯记者丢错的,但它已经修好了。

还要确保安装了FreeType和fontconfiglib。