Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Node.js AWS Lambda在放置s3对象时出错_Node.js_Amazon S3_Aws Lambda_Aws Sdk_Serverless - Fatal编程技术网

Node.js AWS Lambda在放置s3对象时出错

Node.js AWS Lambda在放置s3对象时出错,node.js,amazon-s3,aws-lambda,aws-sdk,serverless,Node.js,Amazon S3,Aws Lambda,Aws Sdk,Serverless,我正在开发一个功能,当任何图像被上传到bucket中的images文件夹时,通过将图像的缩略图版本保存在screenshot文件夹中来创建缩略图。我使用的是无服务器框架。我不断收到如下所示的错误。我粘贴了精确的代码,因此任何人都可以复制粘贴并实现此解决方案。还包括Serverless.yml、handler函数文件以及任何支持文件 我不明白什么时候我指的是缓冲区,为什么我会得到这个错误,对象类型不是缓冲区等等 {InvalidParameterType:预期params.Body为字符串、缓冲

我正在开发一个功能,当任何图像被上传到bucket中的images文件夹时,通过将图像的缩略图版本保存在screenshot文件夹中来创建缩略图。我使用的是无服务器框架。我不断收到如下所示的错误。我粘贴了精确的代码,因此任何人都可以复制粘贴并实现此解决方案。还包括Serverless.yml、handler函数文件以及任何支持文件

我不明白什么时候我指的是缓冲区,为什么我会得到这个错误,对象类型不是缓冲区等等

{InvalidParameterType:预期params.Body为字符串、缓冲区、流、Blob或类型化数组对象
在ParamValidator.fail(/var/runtime/node_modules/aws sdk/lib/param_validator.js:50:37)
在ParamValidator.validatePayload(/var/runtime/node_modules/aws sdk/lib/param_validator.js:255:10)
在ParamValidator.validateScalar(/var/runtime/node_modules/aws sdk/lib/param_validator.js:133:21)
在ParamValidator.validateMember(/var/runtime/node_modules/aws sdk/lib/param_validator.js:94:21)
在ParamValidator.validateStructure(/var/runtime/node_modules/aws sdk/lib/param_validator.js:75:14)
在ParamValidator.validateMember(/var/runtime/node_modules/aws sdk/lib/param_validator.js:88:21)
在ParamValidator.validate(/var/runtime/node_modules/aws sdk/lib/param_validator.js:34:10)
at Request.VALIDATE_参数(/var/runtime/node_modules/aws sdk/lib/event_listeners.js:125:42)
at Request.callListeners(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:105:20)
在callNextListener(/var/runtime/node_modules/aws sdk/lib/sequential_executor.js:95:12)
消息:“预期params.Body为字符串、缓冲区、流、Blob或类型化数组对象”,
代码:“InvalidParameterType”,

时间:2019-03-12T16:37:26.910Z}
您的
大小调整器
函数的返回值不是您所期望的。您正在使用带有回调的
getBuffer
函数,这意味着图像的缓冲区不是由承诺解析的,而是在回调中使用的,这不是您的意图。您应该改为使用
getBufferAsync
,它返回解析为图像缓冲区的承诺。您的
大小调整器
函数应该如下所示:

function resizer(data, height) {
    return Jimp.read(data)
        .then(image => image
                .resize(Jimp.AUTO, height)
                .quality(100) // set JPEG quality
                .getBufferAsync(Jimp.MIME_JPEG)
        )
        .catch(err => err);
}