I am trying to use AWS Javascript SDK for accessing S3. I am using the Promises with 'Q' library. However it is not working. I have set the Q dependency also.
var Q = require('q');
AWS.config.setPromisesDependency(Q);
Here's the code I have:
var listBucketPromise = s3.listBuckets().promise();
listBucketPromise.then(
function (response) {
console.log(" response = " + response );
} ,
function (error) {
console.log(" error = " + error);
}
);
This shows on console :
response = function (resolve, reject) {
self.on('complete', function(resp) {
if (resp.error) {
reject(resp.error);
} else {
// define $response property so that it is not enumberable
// this prevents circular reference errors when stringifying the JSON object
resolve(Object.defineProperty(
resp.data || {},
'$response',
{value: resp}
));
}
});
self.runTo();
}
I have a valid s3 client set correctly. The callback format works:
s3.listBuckets(function (err, data) {
console.log(data);
});
Why is the promise code not working ?
setPromisesDependencyexpects a promise constructor, try passingQ.Promiseinsteadconsole.log(" response = " + response );AWS.config.setPromisesDependency(Q.Promise);did make the difference.. I am able to get the response now.. Many thanks !. If you could post that as an answer, I will be happy to accept it.. :)