Próbuję przesłać obraz do S3, ale kiedy zadzwonię do s3.putObject (params, callback), mój callback nigdy nie zostanie wywołany i żadne błędy nie są rejestrowane.S3.putObject - wywołanie zwrotne nigdy nie jest wywoływane
Oto odpowiedni kod:
var params = {
Key: key,
Body: imageData,
ContentLength: imageData.byteCount,
ContentType: contentType,
};
this.s3.putObject(params, function(err, data) {
console.log('here');
if (err) {
callback(err);
return;
}
callback(null, key);
});
Gdzie params jest { Key: 'e2f99bf3a321282cc7dfaef69fe8ca62.jpg', Body: {imageData parsed from request using node-multiparty}, ContentLength: 27802, ContentType: 'image/jpeg', }
I sprawdzeniu, że this.s3 jest ważna i typeof this.s3.putObject jest funkcja, jak oczekiwano.
Możesz uzyskać pewien wgląd, instalując i wymagając modułu 'nock' od npm, który wydrukuje dokładnie, jaki adres URL jest wymagany. Jeśli program zawiesza się czekając na wywołanie zwrotne, być może zapora ignoruje próbę połączenia TCP. Czy pozwalasz programowi zawieszać się na kilka minut, aby sprawdzić, czy w końcu skończy się limit czasu, a następnie zostanie wywołane wywołanie zwrotne? –
Czy twój program kończy wykonywanie zanim zdarzenie async może zwrócić wartość? Zobacz podobny temat z AWS Lambda: https://stackoverflow.com/questions/28449363/why-is-this-http-request-not-working-on-aws-lambda –