Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;无法读取属性';推动';“未定义”的定义;将S3操作与承诺链接时_Javascript_Node.js_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

Javascript &引用;无法读取属性';推动';“未定义”的定义;将S3操作与承诺链接时

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

我搞不懂这个。谢谢你的帮助

我有一个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) => {
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,似乎是不确定的。