我有一个用typescript编写的简单lambda函数(很少或没有经验)
我试图从接收到lambda的事件对象中提取查询字符串参数,但它告诉我此错误。
(property) APIGatewayProxyEventV2WithRequestContext<APIGatewayEventRequestContextV2>.queryStringParameters?: APIGatewayProxyEventQueryStringParameters | undefined
'event.queryStringParameters' is possibly 'undefined'.ts(18048)
下面是我的lambda代码
import { APIGatewayProxyEventV2, APIGatewayProxyResultV2, APIGatewayProxyEventV2WithRequestContext, Context } from 'aws-lambda';
const region = process.env.AWS_REGION
export async function handler(
event: APIGatewayProxyEventV2): Promise<APIGatewayProxyResultV2> {
console.log('event 👉', event);
const token = event.queryStringParameters.token
const Url = event.queryStringParameters.Url
const message =事件.记录[0]. Sns. Message。//如果我从aws服务获取事件,则出现类似错误。
if (token) {
await sendApproval(event.queryStringParameters)
return {
statusCode: 301,
headers: {
Location: Url,
}
};
} else {
return {
body: JSON.stringify({ message: 'Oops Approval was not sent successfully' }),
statusCode: 502,
};
}
}
在类似的方式,如果有一个事件从aws服务,需要我提取它。它有一个类似的错误,其中记录不存在const message = event.Records[0].Sns.Message
为了解决这个问题,我用一个!
操作符来修复它。
const token = event.queryStringParameters!.Token
const Url = event.queryStringParameters!.Url
只有这个能修好吗?
2条答案
按热度按时间b4wnujal1#
“@types/aws-lambda”包正在尝试警告您传入事件上可能不存在
queryStringParameters
属性。通过使用
!
,您将告诉TypeScript编译器类型定义是错误的,并且queryStringParameters
永远不会是undefined
。编写代码的一种更好的方法是接受
queryStringParameters
可能是undefined
,并添加一些代码来处理它,从而避免意外的、难以诊断的错误。7gcisfzg2#
有几种方法可以处理这个问题
1.您可以在尝试访问字段之前检查是否定义了event.queryStringParameters。
1.可以使用
constant token = event.queryStringParameters[‘Token’]
之类的对象索引访问器1.您可以在tsconfig中禁用严格模式(不推荐)