首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流没有结束(没有发送响应)

流没有结束(没有发送响应)
EN

Stack Overflow用户
提问于 2020-04-16 22:20:21
回答 1查看 49关注 0票数 0

我有一个离工作很近的地方:

代码语言:javascript
复制
app.post('/html-to-pdf', (req,res,next) => {

  log.info('got request to convert html to pdf...');

  const k = cp.spawn('pandoc', ['-f', 'html','--pdf-engine=xelatex','-t','latex']);
  req.pipe(k.stdin, {end: true}).pipe(res, {end:true});

  k.stdout.on('data', d => {
    console.log('stdout:', String(d));
  });

  res.on('data', d => {
    console.log('data:',d);
  });

});

我可以使用以下方式发送路由html:

代码语言:javascript
复制
$ curl -d '<html>hiiii</html>' -X POST localhost:3701/html-to-pdf

服务器将获取数据,并将其转换,此处理程序将打印正确的信息:

代码语言:javascript
复制
  k.stdout.on('data', d => {
    console.log('stdout:', String(d)); // logs "hiiii"
  });

但是问题是没有发送响应!它只会永远挂着。如您所见,我在两个管道调用中都使用了{end:true},但这没有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-16 22:50:59

我想出来了,因为我应该这么做:

代码语言:javascript
复制
req.pipe(k.stdin);
k.stdout.pipe(res);

而不是这样:

代码语言:javascript
复制
req.pipe(k.stdin).pipe(res);

在这种情况下,我怀疑是否需要显式{end:true},但是我没有在没有测试的情况下测试它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61261016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档