新手问题...
我有一个本地工作的node.js应用程序,我现在试图将其快速部署到AWS lambda。我已经使用本指南部署了一个测试版本(成功了)。
我现在正在尝试实现我的应用程序,它使用ES6(类型为:package.json中的模块)。
在我的申请表中,我添加了
import serverless from 'serverless-http'
但我想不出导出的正确语法-原来的是...
module.exports.handler = serverless(app);
我试过:
const handler = async (app) =\> {
return serverless(app)
}
export default handler
收到错误消息:
2022 - 11 - 05T15:50:25.962Z未定义错误未捕获异常
"errorType": "Runtime.HandlerNotFound",
"errorMessage": "app.handler is undefined or not exported",
"stack": [
"Runtime.HandlerNotFound: app.handler is undefined or not exported",
" at Object.UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:979:15)",
" at async start (file:///var/runtime/index.mjs:1137:23)",
" at async file:///var/runtime/index.mjs:1143:1"
]
我强烈怀疑我错过了一些基本的理解-真正感谢一些指导。
1条答案
按热度按时间5gfr0r5j1#
错误的原因是当AWS Lambda需要命名导出时,您发送的是默认导出。
该问题与所有ES6导入/导出相同:
因此,这就像上面的情况,您发送defaultExport,但AWS Lambda想要
{ namedExport }
。您只需要从导出中删除default
,并确保正确构建处理程序。我已经测试过了,它可以使用Node18.x进行无服务器离线操作。你可以在MDN上阅读更多关于导出的信息。