ts ES5 / ES3の非同期関数またはメソッドには 'Promise'コンストラクターが必要です


99

こんにちは、TypeScriptプロジェクトでasync / awaitを使用していますが、次のログを取得しています。

[ts] ES5 / ES3の非同期関数またはメソッドには、「Promise」コンストラクターが必要です。'Promise'コンストラクターの宣言があることを確認するか、--libオプションに 'ES2015'を含めてください。

どうすれば解決できますか?

回答:


146

エラーメッセージが示すようlib: es2015に、tsconfig.json に追加します。

// tsconfig.json
{
  "compilerOptions": {
    "lib": [ "es2015" ]
  }
}

更新:これがうまくいかない場合は、これを試してください:

WebStormなどのJetBrains IDEは、デフォルトで独自の実装を使用します。代わりにTypeScript言語サービスを使用するように構成してください。

Visual Studioの場合、プロジェクトファイルとtsconfig.jsonは相互に排他的です。プロジェクトを直接構成する必要があります。

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


{ "compilerOptions": { "module": "commonjs", "target": "es5", "noImplicitAny": false, "sourceMap": false } }これは私のtsconfig.jsonです。
セドリックHeidarizarei

Visual Studio 2017でこれをどこに指定しますか?tsconfig.jsonがありません
Akash Kava

1
@katopz私はそうしましたが、VSはそれを気にしません、そのcsprojようなことを有効/無効にするためにファイルにいくつかの追加のxml要素があることがわかりました。
Akash Kava 2017

3
結果を確認するには、IDE(WebStorm)を再起動する必要がありました。
コリ

1
配列にも含める必要があり"dom"ました"lib"。そうしないと、他のエラーが発生します。
Electrovir

22

es6-promiseの型定義を含むこのパッケージを試してください

npm install --save @types/es6-promise


2
「ユニオン」は間違っていませんが、あなたの答えは私が抱えていた問題を分類するものでした。ありがとう!
tuliomarchetto 2017

11

あなたはVS上にある場合、tsconfig.jsonを削除して、右ソリューションエクスプローラでプロジェクトをクリックし、をクリックして全般における活字体ビルドが>プロパティ-以下を変更

  • ECMAScriptバージョン:ECMAScript 6

  • モジュールシステム:ES2015


ソリューションエクスプローラーの@LukePighettiプロジェクト
Ivandro IG Jao


0

VS2019はtsconfig.jsonファイルを認識していないようなので、LIBオプションはアプリケーションを変更しません。これは、typesyncがASYNC AWAITを受け入れるようにPROMISEを追加する方法です。

export function AD(first: any, second: any, callBack: any)
{
    const rtn = async (dispatch: any): Promise<void> =>
    {
        await axios.post(TYPE.URI, { // provide a string of a URI to post into
            parm1: first,
            parm2: second
        })
            .then(data => // or you can use response instead of data as a name
            {
                console.log("data from call next");
                console.log(data);
                dispatch({ type: TYPES.AD, payload: data.data });
                if (callBack)
                {
                    callBack(data);
                }
            })
    }
    return rtn;

}

0

私にとってエラーは、src/testsフォルダー内のテストファイルで発生しました。ファイルを直接ts-nodeテストするために使用しているので.ts、私はで除外しsrc/tests/*ましたtsconfig.json。行を削除するとすぐにエラーはなくなりました(これは最終的には意味があります)。

他の誰かが彼のテストファイルでこれに苦労している場合に備えて。

編集:もちろん--lib、受け入れられた回答で概説されているように、オプションを正しく構成する必要があります。私のtsconfig.json --libオプションは次のように機能します:

"lib": [
    "es2018",
    "dom"
]

0

ようやく解決しました!
端末での私のコマンド: yarn tsc main.ts && nodejs main.js 私のエラーメッセージ:

main.ts:1:16 - error TS2705: An async function or method in ES5/ES3 requires the 'Promise' constructor.  Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your `--lib` option.

1 async function main() {
                 ~~~~


Found 2 errors.

error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

私がそれを解決するためにしたことは、tsconfig.jsonファイルを参照することでした。
私のtsconfig.jsonファイルは次のとおりです:

{
    "compilerOptions": {
        "target": "ESNext",
        "lib": [
            "ES2015",
            "DOM"
        ]
    }
}

そして、私のターミナルコマンドは次のようyarn tsc -p ./tsconfig.json && nodejs main.js になります。他の.tsファイルを実行したい場合は、次のように します。 yarn tsc -p ./tsconfig.json && nodejs file_name.js


-4

Angular 4プロジェクトでVS2017 v15.8.2とTypescript 2.4.2を使用しています(typescriptプロジェクトではなく、ソリューションのクラスライブラリプロジェクトの下)。JavaScript言語サービスを無効にすることで、VSのエラー/警告を取り除くことができました。

オプション=>テキストエディター=> JavaScript / TypeScript =>言語サービス

VSを再起動します。

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.