首页 > 解决方案 > 使用 NodeJS 回调上传到 S3 存储桶必须是一个函数。收到未定义

问题描述

尝试上传到 NodeJS 中的 S3 存储桶,但我不断收到此错误:

##[error]Callback must be a function. Received undefined
##[error]Node run failed with exit code 1

这是我上传的脚本:

var AWS = require('aws-sdk');
const s3 = new AWS.S3({apiVersion: '2006-03-01', accessKeyId: AWS_SECRET_ID, secretAccessKey:AWS_SECRET_KEY, region:AWS_REGION  });
  var body = fs.open(`./${package}`);

  const params = {
   Body: body,
   Bucket: bucketName
   };
   s3.upload(params, function(err, data){
     if(err){
       console.log(`Failed upload to ${bucketName}`);
       throw err;
     } else {
       console.log(`Succesful upload to ${bucketName}`);
     }
   });

我在这里很困惑,因为我在上传中有回调?其中很多只是从 AWS 示例中复制和粘贴的。

标签: node.jsamazon-web-servicesamazon-s3aws-sdkaws-sdk-js

解决方案


fs.open()接受一个论点,callback. 这很可能是错误的来源。

该函数是一个异步函数,因此返回的数据需要由回调函数处理。

你会想做:

fs.open(`./${package}`, (err, data) => {
   // Implement callback here
});

NodeJS 文档


推荐阅读