Intento subir a un bucket de S3 en NodeJS pero sigo recibiendo este error:

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

Aquí está mi script haciendo la carga:

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}`);
     }
   });

¿Estoy confundido aquí porque tengo la devolución de llamada en carga? Y mucho de esto se copió y pegó de ejemplos de AWS.

1
Kyle Calica-St 18 oct. 2019 a las 21:01

1 respuesta

La mejor respuesta

fs.open() toma un argumento, callback. Esta es probablemente la fuente del error.

Esta función es una función asíncrona y, por lo tanto, los datos devueltos deben ser manejados por la función de devolución de llamada.

Querrás hacer:

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

Documentación de NodeJS

2
c_sagan 18 oct. 2019 a las 18:06