typescript 打印稿AWS Lamba:未定义QueryString参数

rur96b6h  于 2023-03-13  发布在  TypeScript
关注(0)|答案(2)|浏览(127)

我有一个用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

只有这个能修好吗?

b4wnujal

b4wnujal1#

“@types/aws-lambda”包正在尝试警告您传入事件上可能不存在queryStringParameters属性。
通过使用!,您将告诉TypeScript编译器类型定义是错误的,并且queryStringParameters永远不会是undefined
编写代码的一种更好的方法是接受queryStringParameters可能是undefined,并添加一些代码来处理它,从而避免意外的、难以诊断的错误。

const token = event.queryStringParameters?.token
if (!token) {
    throw new Error("The token query string parameter was not found on the request!");
}
7gcisfzg

7gcisfzg2#

有几种方法可以处理这个问题
1.您可以在尝试访问字段之前检查是否定义了event.queryStringParameters。
1.可以使用constant token = event.queryStringParameters[‘Token’]之类的对象索引访问器
1.您可以在tsconfig中禁用严格模式(不推荐)

相关问题