我使用数字海洋空间,并使用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))
}
1条答案
按热度按时间nfg76nw01#
我们发现更新我们的
@aws-sdk/client-s3
版本确实可以做到这一点。例如,我们以前的版本是:
"@aws-sdk/client-s3": "^3.18.0"
,新版本为"@aws-sdk/client-s3": "^3.427.0"
问题可能是与较新的节点版本不兼容。我们最近从
node 16
更新到node 18
。这个问题是在更新之后出现的。