我有以下代码并想导出handler
using module.exports.handler
. 由于start()
是一个异步函数并且处理程序是在其中定义的,因此我无法使用以下代码正确导出它。我尝试对 start()使用顶级 await并得到一个错误。我能知道另一种方法来实现这一目标吗?提前致谢。
//index.ts
import serverless from 'serverless-http';
let handler;
const start = async (): Promise<void> => {
//some function calls with await
const server = express();
//server.use()
handler = serverless(server);
};
start().then(() => {
console.log(handler) //[AsyncFunction (anonymous)]
});
console.log(handler) //undefined
module.exports.handler = handler;
顺便说一句,我需要handler
在我的serverless.yml
service: rest-server
provider:
name: aws
runtime: nodejs12.x
region: eu-west-1
environment: ${file(serverless.env.yml)
stage: dev
memorySize: 128
functions:
h5p:
handler: src/index.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
plugins:
- serverless-plugin-typescript
- serverless-offline
您可以创建一个新的处理程序,等待启动完成,然后调用原始处理程序。这仅要求允许导出的处理程序函数是异步的。
const finishedStarting = start()
module.exports.handler = (...args) => finishedStarting.then(() => handler(...args));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句