为何await axios后文件仍在下载完成前被关闭?
问题根源解析
- axios的Promise不会等待响应流通过pipe写完文件才resolve,它的完成时机远早于文件写入结束。
- 当你设置
responseType: 'stream'用axios获取响应流时,axios的Promise在服务器返回响应头、响应流可读取时就会resolve,这时候响应体的数据流还在持续传输,pipe操作还在进行中。 - 你此时
awaitaxios后立刻关闭文件流,相当于强制中断了还在写入的pipe进程,后续pipe尝试往已关闭的文件流写数据,就会触发Error [ERR_STREAM_WRITE_AFTER_END]错误。
简单说:await axios只等拿到响应对象,不等流写完。
内容的提问来源于stack exchange,提问作者Phantom
相关产品推荐
相关产品推荐

