gpt4 book ai didi

javascript - 如何在aws lambda中调用javascript类处理函数

转载 作者:行者123 更新时间:2023-12-01 01:23:28 25 4
gpt4 key购买 nike

我正在尝试将 AWS lambda 与 Nodejs 中的 ECMA6 类一起使用。目前我的代码如下所示(我真正想做的事情的简化版本):

class testClass {
constructor(str) {
this.str = str;
}

async handler(event) {
return {
statusCode: 200,
body: this.str,
};
}
}

module.exports = new testClass('test');

当在本地测试时

const testClass = require('./testClass');
const result = await testClass.handler();

它按预期工作,但是当我将其添加到 lambda 函数并调用它时,它会返回

{
"errorMessage": "Cannot read property 'str' of undefined",
"errorType": "TypeError",
"stackTrace": [
"handler (/var/task/index.js:9:24)"
]
}

看来,该类的构造函数并未在 lambda 上下文中调用。知道为什么会出现这种情况以及如何解决这个问题吗?

最佳答案

您可以在 es6 类中使用静态函数,AWS 期望一个带有回调参数的函数,该函数将被执行。根据响应,如果您传递一个类方法,而不实例化该类,它将不起作用,这就是为什么您应该使用静态函数,这样:

// MyAwesomeClassLambda.js

class MyAwesomeClassLambda {
static async myAwesomeClassFunction(event) {
// return await someAsyncMethodLikeDataBaseCallOrSomethingLikeThat()
return { message: 'hello world' }
}
}

module.exports = MyAwesomeClassLambda

顺便说一句,该函数必须是异步,这与在function版本中传递的回调的行为等效

在 AWS Lambda 控制台中,您必须将函数指定为:file_name.function_name,在本例中为 MyAwesomeClassLambda.myAwesomeClassFunction

关于javascript - 如何在aws lambda中调用javascript类处理函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54036416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com