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,
...
我找不到关于这些参数(resumable 和 validation)的任何文档,以及为什么使用它们解决了我的问题。 这些参数如何在这种情况下起作用?
【问题讨论】:
1) 您的代码未显示您正在使用/调用的完整操作系统/环境/API/方法/SDK 版本。 2) 确保您有一个 error 事件处理程序来记录实际错误。 3)我不认为设置 resumable 和 validation 解决了你的问题。我认为这掩盖了实际问题。 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表?