ts Für eine asynchrone Funktion oder Methode in ES5 / ES3 ist der Konstruktor 'Promise' erforderlich


98

Hallo, ich verwende async / await in meinem TypeScript-Projekt, aber ich erhalte dieses Protokoll:

[ts] Eine asynchrone Funktion oder Methode in ES5 / ES3 erfordert den Konstruktor 'Promise'. Stellen Sie sicher, dass Sie eine Deklaration für den Konstruktor 'Promise' haben, oder fügen Sie 'ES2015' in Ihre --libOption ein.

Wie kann ich das lösen?

Antworten:


145

lib: es2015Fügen Sie, wie in der Fehlermeldung angegeben, Ihre Datei tsconfig.json hinzu

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

UPDATE: Wenn dies bei Ihnen nicht funktioniert, versuchen Sie Folgendes:

JetBrains-IDE wie WebStorm verwenden standardmäßig eine eigene Implementierung. Stellen Sie sicher, dass Sie es so konfigurieren, dass stattdessen der TypeScript-Sprachdienst verwendet wird.

Für Visual Studio schließen sich die Projektdateien und tsconfig.jsongegenseitig aus. Sie müssen Ihr Projekt direkt konfigurieren.

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


{ "compilerOptions": { "module": "commonjs", "target": "es5", "noImplicitAny": false, "sourceMap": false } }Dies ist meine tsconfig.json. Wie soll ich bearbeiten?
Sedric Heidarizarei

Wo kann dies in Visual Studio 2017 angegeben werden? Es hat nicht tsconfig.json
Akash Kava

1
@katopz Ich habe es getan, aber VS kümmert sich nicht darum. Ich habe festgestellt, dass die csprojDatei einige zusätzliche XML-Elemente enthält, um solche Dinge zu aktivieren / deaktivieren.
Akash Kava

3
Ich musste meine IDE (WebStorm) neu starten, um das Ergebnis zu sehen.
Coli

1
Ich musste auch "dom"in das "lib"Array aufnehmen oder ich bekomme andere Fehler.
Electrovir

22

Probieren Sie dieses Paket aus, das Typdefinitionen für es6-Versprechen enthält

npm install --save @types/es6-promise


2
'unional' ist nicht falsch, aber Ihre Antwort war die, die das Problem sortierte, das ich hatte. Vielen Dank!
Tuliomarchetto

11

Wenn Sie sich in VS befinden, löschen Sie die Datei tsconfig.json und klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer. Klicken Sie dann auf Eigenschaften-> TypeScript Build in General. Ändern Sie die folgenden Schritte

  • ECMAScript-Version: ECMAScript 6

  • Modulsystem: ES2015


@ LukePighetti Projekt im Solution-Explorer
Ivandro IG Jao


0

VS2019 scheint die Datei tsconfig.json nicht zu erkennen, daher ändern LIB-Optionen die Anwendung nicht. Auf diese Weise können Sie das PROMISE für Typoskript hinzufügen, um ASYNC AWAIT zu akzeptieren.

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

Bei mir ist der Fehler in meinen Testdateien im src/testsOrdner aufgetreten . Da ich ts-nodezum .tsdirekten Testen der Dateien verwende, habe ich src/tests/*in meinem ausgeschlossen tsconfig.json. Sobald ich die Zeile gelöscht habe, war der Fehler verschwunden (was am Ende Sinn macht).

Nur für den Fall, dass jemand anderes in seinen Testdateien damit zu kämpfen hat.

BEARBEITEN: Natürlich müssen Sie Ihre --libOption korrekt konfigurieren , wie in der akzeptierten Antwort beschrieben. Meine tsconfig.json --libOption funktioniert wie folgt:

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

-4

Ich verwende VS2017 v15.8.2 und Typescript 2.4.2 in einem Angular 4-Projekt (unter einem Klassenbibliotheksprojekt in meiner Lösung kein Typoskriptprojekt). Ich konnte den Fehler / die Warnung in VS entfernen, indem ich den JavaScript-Sprachdienst deaktivierte :

Optionen => Texteditor => JavaScript / TypeScript => Sprachdienst

Starten Sie VS neu.

Hoffe das hilft.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.