如何 module.export 在异步函数中定义的值?

鲁克山·贾塞卡拉

我有以下代码并想导出handlerusing 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
A_A

您可以创建一个新的处理程序,等待启动完成,然后调用原始处理程序。这仅要求允许导出的处理程序函数是异步的。

const finishedStarting = start()

module.exports.handler = (...args) => finishedStarting.then(() => handler(...args));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Node JS - 如何在“module.export”函数中调用方法?

如何在 mysql 查询的 module.export 函数中使用回调 - nodejs,express

如何在 JavaScript 的 module.export 中添加窗口全局变量?

在NodeJS中var export = module.exports = {}

内联html中的module.export

你如何动态地 module.export 一个文件夹中的所有文件?

导出了一个用 JS 编写的类(module.export)如何将其用于 javascript 中的 html 脚本?

从承诺链函数返回module.export的响应

Module.export一个'默认'函数

如何从异步函数中返回值

如何尽快获取异步函数中的值?

如何使用异步函数异步侦听 Firestore 中的值?

如何忽略异步块中异步函数的返回值?

如何在非异步函数中获取异步操作的值?

Node.js中的module.exports与export

node.js中module.export()的问题

Perl:如何从@EXPORT打印变量和值

如何创建一个 javascript 对象以通过 export.module 导出?

是module.export = []不良做法?

如何在异步库的“每个”函数中定义回调?

如何从使用ʻexport =`的模块中重新导出`*

如何在反应中从异步函数中检索值?

如何在异步等待函数中返回值?

如何从 node.js 中的异步函数返回值

Swift:如何在异步urlsession函数中返回值?

如何将值传递给JS中的异步函数

如何从React Native中的异步JS函数返回变量的值

如何在 Python/Django 的“export”函数中使用先前定义的方法(funcs)?

module.export不导出文件,要导入到main.js中