javascript - 使用 Promisify 从回调转换为 Async-Await 格式后,AWS S3 上传不起作用

标签 javascript amazon-web-services amazon-s3 promise aws-sdk

我正在使用 upload方法来自 aws-sdk从浏览器中的 React 应用程序将文件上传到 S3 存储桶。

original callback based upload method如下所示:

var params = {Bucket: 'bucket', Key: 'key', Body: stream};
s3.upload(params, function(err, data) {
  console.log(err, data);
});

我用 promisify 包裹了它像下面的 Async-await 一样工作:

const AWS = require('aws-sdk');
const { promisify } = require('es6-promisify');

... <in my React component> ...
async uploadFile() {
try {
    var params = {
      Bucket: <BucketName>,
      Key: <KeyName>,
      Body: <File Stream>
    };
    const res = await uploadToS3Async(params);
    console.log(res);
  } catch (error) {
    console.log(error);
  }
}

现在,当我在某些事件上调用 uploadFile 函数时,它会产生以下错误:

TypeError: service.getSignatureVersion is not a function
    at ManagedUpload.bindServiceObject  
    at ManagedUpload.configure 
    at new ManagedUpload  
    at upload   
    at new Promise (<anonymous>)

最佳答案

你不需要使用es6-promisify

你可以这样做:

try {
  const params = {Bucket: 'bucket', Key: 'key', Body: stream};  
  const data = await s3.upload(params).promise();
  console.log(data);
}
catch (err) {
  console.log(err);
}

https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/using-promises.html

关于javascript - 使用 Promisify 从回调转换为 Async-Await 格式后,AWS S3 上传不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57644283/

相关文章:

amazon-web-services - AWS 控制台上缺少自定义指标(磁盘空间利用率)

python - 如果我们想使用 S3 来托管 Python 包,我们如何告诉 pip 在哪里可以找到最新版本?

java - AWS - 如何在 Java Web 应用程序的子域和域之间共享 session ?

hadoop - 亚马逊 EMR 和 Hive : Getting a "java.io.IOException: Not a file" exception when loading subdirectories to an external table

amazon-web-services - 无法让 HTTPS 与 S3 上的静态托管站点一起使用

javascript - 将函数应用于 MongoDB 集合中的所有对象的最有效方法是什么?

javascript - Karma Jasmine 测试从 Controller 调用的 $resource

javascript - 这两个函数如何等价?

javascript - jQuery ".on( ' click' ,....)"不适用于 LET 变量声明。但适用于 VAR

amazon-web-services - AWS VPC公共(public)Web应用程序通过VPN连接到数据库