【问题标题】:Unhandled 'error' event in NodeJsNodeJs 中未处理的“错误”事件
【发布时间】:2018-12-10 07:46:39
【问题描述】:

我在 NodeJs 中工作,当尝试在“fs”npm 包的帮助下将文件写入 .pdf 时,我遇到了一些错误,甚至没有生成 pdf。我需要帮助才能跳出来,问题是

    events.js:167
      throw er; // Unhandled 'error' event
      ^

Error: write EPIPE
    at WriteWrap.afterWrite [as oncomplete] (net.js:833:14)
Emitted 'error' event at:
    at onwriteError (_stream_writable.js:431:12)
    at onwrite (_stream_writable.js:456:5)
    at _destroy (internal/streams/destroy.js:40:7)
    at Socket._destroy (net.js:603:3)
    at Socket.destroy (internal/streams/destroy.js:32:8)
    at WriteWrap.afterWrite [as oncomplete] (net.js:835:10)

有关此错误的代码:

let doc = await wkhtmltopdf(options, xxxx);
let file = await doc.stdout.pipe(fs.createWriteStream(`${__dirname}/${id}_init.pdf`));

感谢期待!! 我尝试重新安装 fs 包,更改端口但没有改善 我认为问题也可能是 wkhtmltopdf 包的 bcz(我使用的是 Mac)

【问题讨论】:

  • 请把相关代码也贴出来,不要只贴错误。
  • 你绝对不需要从 npm 安装fs,顺便说一句;它是一个内置模块。 nodejs.org/api/fs.html
  • 好的.. 这个问题是 wkhtmltopdf 的 bcz 吗?我想是的

标签: node.js npm wkhtmltopdf fs


【解决方案1】:

我建议您进行以下更改,这对我来说非常有用:

// Set url and options to whatever you wish
let doc = wkhtmltopdf(url, options);
let file = doc.pipe(fs.createWriteStream(`${__dirname}/${id}_init.pdf`));

我们不能在任何一个调用中使用 await,因为 wkhtmltopdf 和 doc.pipe 都没有返回承诺。

您也可以尝试直接写入文件,跳过流,例如

wkhtmltopdf('http://google.com/', { output: 'out.pdf' }); 

【讨论】:

  • 谢谢@Terry,但它对我不起作用,它现在生成空的pdf
  • 尝试其他网址时是否有效?说谷歌?我只是想知道问题是否特定于您的目标网址。
  • 是的,非常感谢@Terry 的时间和回复,问题是因为Mac 需要像brew cask install wkhtmltopdf 一样安装wkhtmltopdf
猜你喜欢
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 2018-02-11
  • 2019-11-10
  • 2020-10-10
  • 2018-12-07
  • 2016-10-13
  • 1970-01-01
相关资源
最近更新 更多