我在node.js AWS lambda函数中有一些奇怪的行为。在我当地的环境中,我使用bluebirdjs来处理我的承诺。我本来是" promisifying" aws-sdk我自己但之后发现了这篇文章https://aws.amazon.com/blogs/developer/support-for-promises-in-the-sdk/并将其转换为使用" promise版本" aws-sdk方法。
基本上,当我尝试使用bluebird(http://bluebirdjs.com/docs/api/promise.bind.html)的bind方法通过promise链传递数据时,我的问题就出现了。这适用于我的本地环境和测试。然而,当我部署到lambda时,我总是会收到错误说" stack:' TypeError:无法设置属性\' property \'未定义\ n"在我看来,这就是"这个"在promise.then()中没有定义回调。有没有人知道为什么.bind()可以在我的本地机器上运行而不在AWS Lambda中运行?我正在运行相同版本的节点。
这就是我正在做的事情
let s3getObjectPromise = s3.getObject({Bucket: bucket, Key: file}).promise();
s3getObjectPromise
.bind({})
.then((data) => {
this.test = 'test';
return parsePOICSV(data, type)
})
.then(function(recordsToUpdate) {
let test = this.test; // THROWS ERROR
// pass recordsToUpdate down the promise chain
let searchRequests = elasticSearchService.constructQuery(recordsToUpdate);
return elasticSearchService.search(searchRequests, recordsToUpdate);
})