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?

Sedric Heidarizarei
quelle

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

unional
quelle
{ "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

Jeff Hernandez
quelle
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

Ivandro IG Jao
quelle
@ LukePighetti Projekt im Solution-Explorer
Ivandro IG Jao
3

Sie können auch die "lib": "es2015.promise" für diesen bestimmten Fehler verwenden

Rannie Aguilar Peralta
quelle
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;

}
sef
quelle
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"
]
bene-we
quelle
-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.

Valone
quelle