【问题标题】:tsnode with new AsyncFunction gives error具有新异步函数的 ts 节点给出错误
【发布时间】:2022-01-27 19:02:48
【问题描述】:
const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor

const fn = new AsyncFunction('a','await blah')

所以我正在尝试使用new AsyncFunction 创建一个函数

这在服务器上运行良好。但是当我做tsnode script.ts 时,我得到了

SyntaxError: await 仅在异步函数和模块的顶层主体中有效

对于确切的行。

不知何故,tsnode 正在创建一个普通函数而不是异步函数。这有什么技巧吗?

【问题讨论】:

    标签: node.js promise ts-node


    【解决方案1】:

    在我的例子中,字符串中的确切 fn 定义是:

    `try{ ${js}\n return await ${fnName}(${args}) \n}catch(err){console.log('err ',err)}`
    

    因此,如果我摆脱 await,它会起作用,即

    `try{ ${js}\n return ${fnName}(${args}) \n}catch(err){console.log('err ',err)}`
    

    仍然没有解决主要的 tsnode async-fn 创建问题,但这是一个让我不解的技巧

    【讨论】:

    • 如果那是 async 函数的主体,它是错误的 - 如果你不在 try/catch 块中等待它,你最好删除该块,因为任何错误都不会被捕获在那里,因为它没有被等待。
    • @404 好点;这使得 try/catch 块变得毫无用处
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2020-04-02
    • 2019-01-28
    • 2019-07-14
    • 2021-06-26
    相关资源
    最近更新 更多