NodeJS 从Digital Ocean Spaces删除文件时未知

j8yoct9x  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(157)

我使用数字海洋空间,并使用aws-sdk上传/删除文件。我已经有这个代码运行了一段时间,但从大约2周前它抛出一个错误。

const listResponse = await this.getDirectoryListing(directory, prefix)
const files = listResponse.Contents ? listResponse.Contents!.map((item) => item.Key!) : []

if (files.length > 0) {
  await this.s3.delete({
    bucket: this.config.env.S3_PUBLIC_BUCKET,
    keys: files,
  })
  this.logger.debug('Old files deleted', { files })
}

抛出的错误是

"type": "S3ServiceException",
"message": "UnknownError",
"stack":
   XAmzContentSHA256Mismatch: UnknownError

s3.delete方法如下所示

async delete(options: IS3Delete): Promise<DeleteObjectsCommandOutput> {
    const deleteObjectsCommand = {
      Bucket: options.bucket,
      Delete: {
        Objects: options.keys.map((item) => ({ Key: item })),
      },
    }

    return this.client.send(new DeleteObjectsCommand(deleteObjectsCommand))
  }
nfg76nw0

nfg76nw01#

我们发现更新我们的@aws-sdk/client-s3版本确实可以做到这一点。
例如,我们以前的版本是:"@aws-sdk/client-s3": "^3.18.0",新版本为"@aws-sdk/client-s3": "^3.427.0"
问题可能是与较新的节点版本不兼容。我们最近从node 16更新到node 18。这个问题是在更新之后出现的。

相关问题