Próbuję użyć Typescript dla mojej AWS Lambda i otrzymuję następujące błędy, gdy używam obietnic.
błąd TS2693: „Promise” odnosi się tylko do typu, ale jest tutaj używana jako wartość.
Próbowałem użyć następujących odmian kodu
Korzystanie z konstruktora Promise
responsePromise = new Promise((resolve, reject) => {
return reject(new Error(`missing is needed data`))
})
przy użyciu Promise.reject
responsePromise = Promise.reject(new Error(`Unsupported method "${request.httpMethod}"`));
Wersje
Poniżej znajdują się wersje w moich zależnościach od deweloperów:
"typescript": "^2.2.2"
"@types/aws-lambda": "0.0.9",
"@types/core-js": "^0.9.40",
"@types/node": "^7.0.12",
Zawartość pliku 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"
]
}
Używam grunt-ts z następującą konfiguracją do uruchamiania zadania ts.
ts: {
app: {
tsconfig: {
tsconfig: "./tsconfig.json",
ignoreSettings: true
}
},
...
Próbowałem z rozwiązaniem wymienionym w Otrzymuję: [ts] „Obietnica” odnosi się tylko do typu, ale jest tutaj używana jako wartość, ale bez powodzenia.
javascript
typescript
promise
kalyanvgopal
źródło
źródło
return
.responsePromise = new Promise((resolve, reject) => { reject(new Error("missing is needed data"))})
Próbowałem tego. Ale to nie rozwiązało problemu.responsePromise
deklarowane?Odpowiedzi:
Miałem ten sam problem z
aws-sdk
i rozwiązałem go za pomocą"target": "es2015"
. To jest mojatsconfig.json
teczka.źródło
@types/aws-lambda
są nieaktualne. Amazon dostarcza typy Typescript z oficjalnym SDK . Nie ma potrzeby korzystania z DefinitelyTyped.Spotkaj się dziś z tym samym błędem i rozwiąż go za pomocą:
Aktualizacja:
Dodaj:
źródło
import {Promise} from 'es6-promise'
;import { Promise } from '../node_modules/es6-promise/es6-promise';
wydaje się jednak, że działa dobrze. Dlaczego TS nie może znaleźć zainstalowanych typów?Rozwiązałem to dodając poniższy kod do pliku tsconfig.json.
źródło
Rozwiązany przez zmianę celu w compilerOptions.
źródło
Oto moja wskazówka. Testowane z Vscode 1.21.1 (na MAC)
Umieść poniżej config do tsconfig.json
do opcji compilerOptions
Zrestartuj IDE (ta akcja jest wymagana: D)
źródło
Miałem ten błąd, ale rozwiązałem go za pomocą tego polecenia, nazwa mojego pliku ts to promises-fs.ts:
i błąd zniknął
źródło
Dodaj poniższy wiersz do pliku, w którym zgłaszany jest błąd - to powinno rozwiązać problem
PS: To zdecydowanie nie jest optymalne rozwiązanie
źródło
TS
jeśli masz zamiar zrobić coś takiego. To znaczy po co ?!Wreszcie tsc zaczął działać bez żadnych błędów. Ale wiele zmian. Podziękowania dla Sandro Keil , Pointy & unional
tsconfig.json
Gruntfile.js
źródło
Miałem ten sam problem z maszynopisem i
aws-sdk
. Rozwiązaniem była zmiana celu naes6
.Mój kompletny
tsconfig.json
plik:źródło
Miałem ten sam problem, dopóki nie dodałem następującej tablicy lib w typeScript 3.0.1
tsconfig.json
źródło
Cóż, może to być sprzeczne z intuicją, ale rozwiązałem to, dodając
esnext
do mojegolib
.FIX, zgodnie z sugestią kompilatora, ma
źródło
Core-js nie działał u mnie, ponieważ powodował inne problemy, jednak po prostu zainstalowanie najnowszej wersji
npm i @types/es6-promise --save-dev
pozbyło się problemów. Problemy wynikały z kompilacji zestawu SDK korzystającego z rxjs. Oto błąd, który otrzymałem:źródło
Jeśli korzystasz z repozytorium DefinitelyTyped w swoim projekcie, możesz napotkać ten ostatni problem .
Przyzwoitym obejściem, którego możesz użyć (innym niż czekanie na zaktualizowaną kompilację pliku definicji lub refaktoryzację kodu TS), jest określenie jawnej wersji + kompilacja dla typów core-js, zamiast pozwolić programowi Visual Studio wybrać najnowszą / najnowszą . Znalazłem taki, który wydaje się być nienaruszony przez ten problem (przynajmniej w moim przypadku), możesz go użyć, zastępując następujący wiersz z pliku package.jso n:
Z następującym:
To rozwiązało mój problem na dobre. Jednak zdecydowanie zaleca się usunięcie jawnej wersji + odniesienia do kompilacji, gdy tylko problem zostanie opublikowany.
Aby uzyskać więcej informacji na ten temat, możesz również przeczytać ten wpis na blogu, który napisałem na ten temat.
źródło
Miałem ten sam problem i to uratowało mnie od problemu w drugiej:
napisz w konsoli to:
w pliku, w którym występuje problem, wklej to:
źródło
Po prostu zmień cel na „ES2017” w pliku tsconfig.json.
to jest mój plik tsconfig.json
źródło
npm i --save-dev @ types / es6-promise
po poleceniu up, lepiej sprawdź tsconfig.json i upewnij się, że „cel” musi być świetny niż „es6”. może tsc nie obsługuje jeszcze es5.
źródło
Żadna z udzielonych tutaj odpowiedzi nie działa dla mnie. Oto gwarantowane i rozsądne rozwiązanie. Umieść to u góry dowolnego pliku kodu używającego Promise ...
źródło
Spędziłem dużo czasu, próbując to naprawić. Nie miałem szczęścia w żadnym rozwiązaniu, które zapewniłem tutaj lub gdzie indziej.
Ale potem zdałem sobie sprawę, że to nie tylko rozwiązanie problemu. Ale musisz również PONOWNIE URUCHOMIĆ VSCODE, aby zadziałało.
źródło
Miałem ten sam błąd i naprawiłem go w tej konfiguracji:
Plik: tsconfig.json
źródło
Pamiętaj, że jeśli uruchamiasz polecenie tsc z nazwą pliku, tj .:
wówczas plik konfiguracyjny kompilatora tsconfig.json jest ignorowany. Rozwiązaniem jest uruchomienie albo samego polecenia tsc, w którym to przypadku wszystkie pliki .ts w katalogu zostaną skompilowane, chyba że zmodyfikowano plik tsconfig.json, aby zawierał zestaw plików.
zobacz „using the files property” ... https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
źródło
Ten sam błąd tutaj. Naprawiłem to, używając "module": "ES6" w tsconfig.
źródło
Pozbyłem się tego samego błędu w
index.ts
tych połączonych właściwościach:W tsconfig.json:
A w pliku package.json:
źródło