Ich versuche, Typescript für mein AWS Lambda zu verwenden, und ich erhalte die folgenden Fehler, wo immer ich Versprechungen verwende.
error TS2693: 'Promise' only refers to a type, but is being used as a value here.
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 Dev-Abhä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 ich erwähnten Lösung versucht: [ts] ‘Promise’ bezieht sich nur auf einen Typ, wird hier aber als Wert verwendet, aber kein Glück.
Für die Callback-Funktion, die an den Promise-Konstruktor übergeben wird, ist kein Rückgabewert erforderlich. Einfach loswerden
return
.– Spitze
30. März 2017 um 13:23 Uhr
Meinst du so?
responsePromise = new Promise((resolve, reject) => { reject(new Error("missing is needed data"))})
Ich versuchte es. Aber es half nicht bei dem Problem.– kalyanvgopal
30. März 2017 um 13:29 Uhr
Ja. JavaScript kümmert sich nicht darum, ob Sie einen Wert zurückgeben oder nicht, aber es achtet nicht darauf. TypeScript kümmert sich jedoch darum.
– Spitze
30. März 2017 um 13:30 Uhr
Ich habs. Aber warum kompiliert tsc keine Variante von Promose.resolve oder Promise.reject?
– kalyanvgopal
30. März 2017 um 13:33 Uhr
Das weiß ich nicht. Wie genau ist
responsePromise
erklärt?– Spitze
30. März 2017 um 13:35 Uhr