ts ES5/ES3中的异步函数或方法需要'Promise'构造函数

Sed*_*rei 81 async-await typescript

你好我在我的TypeScript项目中使用async/await但是我得到这个日志:

[ts] ES5/ES3中的异步函数或方法需要'Promise'构造函数.确保您有"Promise"构造函数的声明或在您的--lib选项中包含"ES2015" .

我该如何解决这个问题?

uni*_*nal 125

如错误消息所示,添加lib: es2015到您的tsconfig.json

// tsconfig.json
{
  "compilerOptions": {
    "lib": [ "es2015" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

更新:如果这不适合你,试试这个:

JetBrains IDE(如WebStorm)默认使用自己的实现.确保将其配置为使用TypeScript语言服务.

对于Visual Studio,项目文件tsconfig.json是互斥的.您需要直接配置项目.

https://github.com/Microsoft/TypeScript/issues/3983#issuecomment-123861491

  • 我还必须在 ``"lib"`` 数组中包含 ``"dom"`` 否则我会遇到其他错误。 (4认同)
  • 我必须重新启动IDE(WebStorm)才能看到结果。 (2认同)
  • 我有 ("lib": ["dom", "es2015"]) 但它仍然抱怨 (2认同)

Jef*_*dez 20

试试这个包含es6-promise类型定义的包

npm install --save @types/es6-promise

  • 'unional'并没有错,但你的回答是那个解决我遇到的问题的答案.谢谢! (2认同)
  • 如果您的目标是节点,“npm i -D @types/node@16”也可以工作。 (2认同)

rat*_*rus 11

就我而言,我只是不小心删除了函数中的“return”语句,并且在我将其放回之前一直显示此错误。


Iva*_*ael 10

如果您使用的是VS,请删除tsconfig.json并在解决方案资源管理器中右键单击该项目,然后在“常规”中单击“ 属性”->“ TypeScript构建”,更改以下内容

  • ECMAScript版本:ECMAScript 6

  • 模块系统:ES2015


ben*_*-we 5

对我来说,错误发生在文件src/tests夹内的测试文件中。由于我直接ts-node用于测试.ts文件,因此我src/tests/*在我的tsconfig.json. 一旦我删除了该行,错误就消失了(这最终是有道理的)。

以防万一其他人在他的测试文件中遇到这个问题。

编辑:当然,您需要--lib按照已接受的答案中的概述正确配置您的选项。我的tsconfig.json --lib选择如下:

"lib": [
    "es2018",
    "dom"
]
Run Code Online (Sandbox Code Playgroud)