Ich versuche, Typescript für mein AWS Lambda zu verwenden, und es werden die folgenden Fehler angezeigt, wenn ich Versprechen verwende.
Fehler TS2693: 'Versprechen' bezieht sich nur auf einen Typ, wird hier jedoch als Wert verwendet.
Ich habe versucht, die folgenden Variationen im Code zu verwenden
Verwenden des Promise-Konstruktors
responsePromise = new Promise((resolve, reject) => {
return reject(new Error(`missing is needed data`))
})
mit Promise.reject
responsePromise = Promise.reject(new Error(`Unsupported method "${request.httpMethod}"`));
Versionen
Im Folgenden sind die Versionen in meinen Entwicklungsabhängigkeiten aufgeführt:
"typescript": "^2.2.2"
"@types/aws-lambda": "0.0.9",
"@types/core-js": "^0.9.40",
"@types/node": "^7.0.12",
Inhalt von tsconfig.json
{
"compileOnSave": true,
"compilerOptions": {
"module": "commonjs",
// "typeRoots" : ["./typings", "./node_modules/@types"],
"target": "es5",
// "types" : [ "core-js" ],
"noImplicitAny": true,
"strictNullChecks": true,
"allowJs": true,
"noEmit": true,
"alwaysStrict": true,
"preserveConstEnums": true,
"sourceMap": true,
"outDir": "dist",
"moduleResolution": "Node",
"declaration": true,
"lib": [
"es6"
]
},
"include": [
"index.ts",
"lib/**/*.ts"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
Ich verwende grunt-ts mit der folgenden Konfiguration zum Ausführen der ts-Aufgabe.
ts: {
app: {
tsconfig: {
tsconfig: "./tsconfig.json",
ignoreSettings: true
}
},
...
Ich habe es mit der in I get genannten Lösung versucht : [ts] 'Versprechen' bezieht sich nur auf einen Typ, wird hier aber als Wert verwendet, hat aber kein Glück.
javascript
typescript
promise
kalyanvgopal
quelle
quelle
return
.responsePromise = new Promise((resolve, reject) => { reject(new Error("missing is needed data"))})
Ich versuchte es. Aber das Problem war nicht gelöst.responsePromise
deklariert?Antworten:
Ich hatte das gleiche Problem mit dem
aws-sdk
und habe es mit gelöst"target": "es2015"
. Das ist meinetsconfig.json
Akte.quelle
@types/aws-lambda
sind die veraltet. Amazon liefert Typescript-Typen mit dem offiziellen SDK . DefinitelyTyped ist nicht erforderlich.Stoßen Sie heute auf denselben Fehler und lösen Sie ihn mit:
Aktualisieren:
hinzufügen:
quelle
import {Promise} from 'es6-promise'
;import { Promise } from '../node_modules/es6-promise/es6-promise';
scheint jedoch gut zu funktionieren. Warum kann TS die installierten Typisierungen nicht finden?Ich habe dieses Problem gelöst, indem ich der Datei tsconfig.json den folgenden Code hinzugefügt habe.
quelle
Gelöst durch Ändern des Ziels in compilerOptions.
quelle
Hier ist mein Tipp. Getestet mit vscode 1.21.1 (auf MAC)
Fügen Sie die folgende Konfiguration in tsconfig.json ein
in compilerOptions
Starten Sie die IDE neu (diese Aktion ist erforderlich: D)
quelle
Ich hatte diesen Fehler, aber ich habe ihn mit diesem Befehl behoben. Mein ts-Dateiname lautet Versprechen-fs.ts:
und der Fehler ist weg
quelle
Fügen Sie die folgende Zeile zu der Datei hinzu, in der der Fehler ausgelöst wird. Dies sollte das Problem beheben
PS: Dies ist definitiv nicht die optimale Lösung
quelle
TS
wenn Sie so etwas tun wollen? Ich meine, was ist dann der Sinn?!Schließlich begann tsc fehlerfrei zu arbeiten. Aber mehrere Änderungen. Vielen Dank an Sandro Keil , Pointy & unional
tsconfig.json
Gruntfile.js
quelle
Hatte das gleiche Problem mit Typoskript und dem
aws-sdk
. Die Lösung bestand darin, das Ziel auf zu ändernes6
.Meine vollständige
tsconfig.json
Datei:quelle
Ich hatte das gleiche Problem, bis ich das folgende lib-Array in typeScript 3.0.1 hinzufügte
tsconfig.json
quelle
Nun, das mag kontraintuitiv sein, aber ich habe dieses Hinzufügen
esnext
zu meinem Problem gelöstlib
.Das FIX, wie vom Compiler vorgeschlagen, ist zu
quelle
Core-js funktionierte bei mir nicht, da es andere Probleme verursachte. Durch einfaches Installieren der neuesten Version
npm i @types/es6-promise --save-dev
von wurden die Probleme jedoch behoben . Die Probleme für mich waren auf das Kompilieren eines SDK zurückzuführen, der rxjs verwendete. Hier ist der Fehler, den ich bekommen habe:quelle
Wenn Sie das DefinitelyTyped- Repository in Ihrem Projekt verwenden, tritt möglicherweise dieses aktuelle Problem auf .
Eine angemessene Problemumgehung, die Sie möglicherweise verwenden (außer auf einen aktualisierten Build der Definitionsdatei zu warten oder Ihren TS-Code umzugestalten), besteht darin, eine explizite Version + Build für die Core-js-Typisierungen anzugeben, anstatt Visual Studio die neueste / neueste auswählen zu lassen . Ich habe eine gefunden, die von diesem Problem nicht betroffen zu sein scheint (zumindest in meinem Fall). Sie können sie verwenden, um die folgende Zeile aus Ihrer Datei package.jso n zu ersetzen :
Mit dem folgenden:
Dies hat mein Problem endgültig behoben. Es wird jedoch dringend empfohlen, die explizite Version + Build-Referenz zu entfernen, sobald das Problem veröffentlicht wird.
Für weitere Informationen zu diesem Problem können Sie auch diesen Blog-Beitrag lesen , den ich zu diesem Thema geschrieben habe.
quelle
Ich hatte das gleiche Problem und dies rettete mich in zweiter Sekunde vor dem Problem:
Schreiben Sie dies in die Konsole:
Fügen Sie in die Datei, in der das Problem das Kopieren ist, Folgendes ein:
quelle
Ändern Sie einfach das Ziel in der Datei tsconfig.json in "ES2017".
Dies ist meine tsconfig.json-Datei
quelle
npm i --save-dev @ types / es6-versprechen
Nach dem Befehl up sollten Sie tsconfig.json überprüfen, um sicherzustellen, dass das "Ziel" größer als "es6" sein muss. Vielleicht unterstützt tsc es5 noch nicht.
quelle
Keine der hier abgestimmten Antworten funktioniert für mich. Hier ist eine garantierte und vernünftige Lösung. Fügen Sie dies oben in jede Codedatei ein, die Promise verwendet ...
quelle
Ich habe viel Zeit damit verbracht, dies zu beheben. Ich hatte kein Glück mit einer Lösung hier oder anderswo.
Aber später wurde mir klar, dass es nicht nur darum ging, das Problem zu lösen. Sie müssen den VSCODE jedoch auch neu starten, damit er wirksam wird.
quelle
Ich hatte den gleichen Fehler und habe ihn mit folgender Konfiguration behoben:
Datei: tsconfig.json
quelle
Beachten Sie Folgendes: Wenn Sie den Befehl tsc mit einem Dateinamen ausführen, z.
Dann wird die Compiler-Konfigurationsdatei tsconfig.json ignoriert. Die Lösung besteht darin, entweder den Befehl tsc selbst auszuführen. In diesem Fall werden alle .ts-Dateien im Verzeichnis kompiliert, es sei denn, Sie haben die Datei tsconfig.json so bearbeitet, dass sie eine Reihe von Dateien enthält.
Siehe 'Verwenden der Eigenschaft files' ... https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
quelle
Der gleiche Fehler hier. Ich habe dies mit "module": "ES6" in tsconfig behoben.
quelle
Ich habe den gleichen Fehler
index.ts
mit diesen kombinierten Eigenschaften beseitigt:In tsconfig.json:
Und in package.json:
quelle