createWriteStream Node.js 上的可恢复和验证

Posted

技术标签:

【中文标题】createWriteStream Node.js 上的可恢复和验证【英文标题】:Resumable and Validation on createWriteStream Node.js 【发布时间】:2021-12-29 15:04:46 【问题描述】:

我一直在使用 Google 云存储 api 上传一些文件。 我在使用上传请求时遇到了socket hang up的一些错误。

经过一番搜索,我遇到了Error: socket hang up code: 'ECONNRESET' on Google cloud storage,它使用以下方法解决了这个问题:

.createWriteStream(
      resumable: false,
      validation: false,
       ...
    

我找不到关于这些参数(resumablevalidation)的任何文档,以及为什么使用它们解决了我的问题。 这些参数如何在这种情况下起作用?

【问题讨论】:

1) 您的代码未显示您正在使用/调用的完整操作系统/环境/API/方法/SDK 版本。 2) 确保您有一个 error 事件处理程序来记录实际错误。 3)我不认为设置 resumablevalidation 解决了你的问题。我认为这掩盖了实际问题。 Cloud Storage 可能太忙而无法在那个瞬间处理您的请求(很少见)、存在协议问题或许多其他可能性。 【参考方案1】:

根据 Cloud Storage API for Node 的 reference,resumable 属性用于强制 resumable 上传。将对象上传到 Cloud Storage 存储分区时,可恢复上传有助于绕过连接错误。在这种情况下,resumable 属性似乎很有用,因为ECONNRESET 错误包括connection timeouts。至于validate 属性,则用于执行校验和验证。

我还注意到您链接的线程不使用提供的 API 的 upload 方法,根据文档,该方法是 File.CreateWriteStream() 的包装器,并且是用于根据 @ 上传文件的方法987654324@和related threads。

【讨论】:

以上是关于createWriteStream Node.js 上的可恢复和验证的主要内容,如果未能解决你的问题,请参考以下文章

node.js 中与 fs.createWriteStream 关​​联的事件

createWriteStream Node.js 上的可恢复和验证

在 node.js 中使用 createWriteStream 创建大文件时 JavaScript 堆内存不足致命错误:达到堆限制分配失败

如何使用createWriteStream将JSON流式传输到BigQuery表?

如何使用 createWriteStream 将 JSON 流式传输到 BigQuery 表?

Node.js——流的下载