Javascript &引用;无法读取属性';推动';“未定义”的定义;将S3操作与承诺链接时
我搞不懂这个。谢谢你的帮助 我有一个lambda,它基本上将HTML文件从一个S3存储桶复制到另一个S3存储桶,包括一些“魔法”(重用其他HTML文件的部分) 我在nodes.js 10中安装并运行了这个程序Javascript &引用;无法读取属性';推动';“未定义”的定义;将S3操作与承诺链接时,javascript,node.js,amazon-web-services,amazon-s3,aws-lambda,Javascript,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,我搞不懂这个。谢谢你的帮助 我有一个lambda,它基本上将HTML文件从一个S3存储桶复制到另一个S3存储桶,包括一些“魔法”(重用其他HTML文件的部分) 我在nodes.js 10中安装并运行了这个程序 exports.handler = async (event, context, callback) => { } 有回调。使用切换到node.js 12 exports.handler = async (event) => { } 我不得不从回电转向承诺 生成的代码在60
exports.handler = async (event, context, callback) => { }
有回调。使用切换到node.js 12
exports.handler = async (event) => { }
我不得不从回电转向承诺
生成的代码在60%的情况下有效
exports.handler = async (event) => {
for (var record of event.Records) {
if(record.s3.object.key.indexOf(".") != -1){
if (record.s3.object.key.localeCompare("website/") != 0) {
const objectCopied = await s3.putObject( { Body: (await generateHTML( (await s3.getObject({ Bucket: record.s3.bucket.name, Key: record.s3.object.key }).promise()).Body.toString('utf-8'), record.s3.bucket.name )), Bucket: DestBucket, Key: record.s3.object.key.slice("website/".length), ACL: 'public-read', ContentType: 'text/html'}).promise();
}
}
}
return 0;
};
在其他40%中,我得到了以下错误:
Response:
{
"errorType": "TypeError",
"errorMessage": "Cannot read property 'push' of undefined",
"trace": [
"TypeError: Cannot read property 'push' of undefined",
" at Request.HTTP_DATA (/var/runtime/node_modules/aws-sdk/lib/event_listeners.js:389:35)",
" at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)",
" at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)",
" at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)",
" at IncomingMessage.onReadable (/var/runtime/node_modules/aws-sdk/lib/event_listeners.js:289:32)",
" at IncomingMessage.emit (events.js:311:20)",
" at IncomingMessage.EventEmitter.emit (domain.js:482:12)",
" at emitReadable_ (_stream_readable.js:562:12)",
" at onEofChunk (_stream_readable.js:540:5)",
" at readableAddChunk (_stream_readable.js:242:5)"
]
}
我不知道我做错了什么。请帮忙强>
关于“为什么”还有一句话:
我的研究表明,AWS在链接承诺方面存在问题,但我找到的建议解决方案是使用回调。据我所知,这不是nodejs 12的选项,而且在代码中看起来非常难看。我也有类似的问题。找到了一个有用的链接,它有一些类似的东西:Dito,似乎是不确定的。