仅当“模块”选项设置为“esnext”时才允许使用***“等待”表达式

Posted

技术标签:

【中文标题】仅当“模块”选项设置为“esnext”时才允许使用***“等待”表达式【英文标题】:Top-level ‘await’ expressions are only allowed when the ‘module’ option is set to ‘esnext' 【发布时间】:2021-06-03 19:13:33 【问题描述】:

我正在执行 Stripes 集成步骤,但在步骤 2.1 中发现我的代码出错 (https://stripe.com/docs/connect/collect-then-transfer-guide#create-an-account-link)

如何解决这个错误?

代码:

const stripe = require('stripe')('someID');
const account = await stripe.accounts.create(
  type: 'express',
);

错误:

仅当“模块”时才允许使用***“等待”表达式 选项设置为“esnext”或“系统”,并设置了“目标”选项 到 'es2017' 或更高版本.ts(1378)

【问题讨论】:

这意味着你需要用异步函数包装你的等待表达式或者做一些额外的配置来支持***等待。 显然,即使您更改了配置,如果您明确传递文件,tsc 也会忽略您的 tsconfig.json 【参考方案1】:

您可以将 const 帐户的代码包装在异步函数中,因为您的目标选项不支持***等待。

 const account = async () => 
        await stripe.accounts.create(
          type: "express",
  );
;

这取决于您的代码是要返回一些东西还是要在等待之后执行一些其他任务。

如果你想使用***等待,更多关于使用***等待的信息在https://***.com/a/56590390/9423152

【讨论】:

在您提供的链接上,#1 对我有用。我不得不将它包装在一个异步函数中。 这是一种解决方法,向用户展示如何避免使用***等待,而不是答案。正如错误所提到的,如果tsconfig.json 选项正确,您应该能够使用错误所提到的***等待(即没有包装异步函数)。

以上是关于仅当“模块”选项设置为“esnext”时才允许使用***“等待”表达式的主要内容,如果未能解决你的问题,请参考以下文章

Typescript:esnext 编译器选项会破坏从外部库导入的 es6

仅当用户从 Stripe 成功购买时才允许他们进行有限访问

仅当使用 parsleyjs 选择选项 radio 时才需要验证表单

仅当 FormType 为 Create 时才将所有者设置为当前用户

仅当从下拉列表中选择选项时才附加到 iframe src

仅当没有 h1 同级元素时才为元素设置样式