如何在Serverless TypeScript项目配置handler避免无法识别http属性报错
报错原因
- 核心问题是你将
http和s3两个事件触发器定义在了events数组的同一个对象内,Serverless Framework 要求每个事件触发器必须作为events数组的独立元素存在,因此无法识别同一对象内并列的http字段。 - 附加问题:当前的
s3配置值"${s3:}"为空,不符合Serverless变量引用或事件配置的语法规范,需要补充完整参数。
修复后的配置
import { handlerPath } from '@libs/handlerResolver'; export default { handler: `${handlerPath(__dirname)}/handler.main`, events: [ // 独立的HTTP接口触发器 { http: { method: 'get', path: 'parse' } }, // 独立的S3事件触发器,按需二选一使用对应写法 // 写法1:直接配置s3触发规则 { s3: { bucket: '你的S3存储桶名称', event: 's3:ObjectCreated:*' // 替换为实际需要触发的s3事件类型 } } // 写法2:引用外部定义的s3资源变量 // { // s3: "${s3:你的存储桶逻辑名.bucketName}" // } ], environment: { CONFIG_TABLE : process.env.CONFIG_TABLE, } }
额外校验项
- 确认你的项目根目录下的Serverless主配置文件中,provider字段指定为
aws,AWS provider默认支持http事件,无需额外安装插件。 - 如果你使用的是Serverless v3及以上版本,确认没有关闭API Gateway相关的默认配置项。
内容的提问来源于stack exchange,提问作者Interlated
相关产品推荐
相关产品推荐

