可以在 .pipe() 流中使用 npm 请求模块吗?

Can npm request module be used in a .pipe() stream?

我正在使用解析流模块解析 JSON 文件,并希望将结果流式传输到这样的请求中:

var request = require("request")

fs.createReadStream('./data.json')
  .pipe(parser)
  .pipe(streamer)
  .pipe(new KeyFilter({find:"URL"}) )
  .pipe(request)
  .pipe( etc ... )

(注意:KeyFilter 是一种自定义转换,在管道传输到 process.stdout 时可以正常工作)

我已经阅读了文档和源代码。这不适用于 'request' 或 'new request()',因为构造函数需要 URL。

它将与 request.put() 一起工作,如下所示:yourStream.pipe(request.put('http://example.com/form'))

经过更多的研究和试验后,我得出结论不能以这种方式使用请求。简单的答案是请求创建一个可读流,而 .pipe() 方法需要一个可写流。

我尝试了几次将请求包装在转换中的尝试,但没有成功。虽然您可以接收管道 url 并创建一个新请求,但我无法弄清楚如何在不对流模式进行一些真正不自然的弯曲的情况下重置管道回调。任何想法将不胜感激,但我已经开始使用 url 流中的事件来启动新请求(url).pipe(等)类型流。