J'essaie d'utiliser Typescript pour mon AWS Lambda et j'obtiens les erreurs suivantes partout où j'utilise des promesses.
erreur TS2693: «Promise» ne fait référence qu'à un type, mais est utilisée comme valeur ici.
J'ai essayé d'utiliser les variantes suivantes du code
Utilisation du constructeur Promise
responsePromise = new Promise((resolve, reject) => {
return reject(new Error(`missing is needed data`))
})
en utilisant Promise.reject
responsePromise = Promise.reject(new Error(`Unsupported method "${request.httpMethod}"`));
Versions
Voici les versions de mes dépendances de développement:
"typescript": "^2.2.2"
"@types/aws-lambda": "0.0.9",
"@types/core-js": "^0.9.40",
"@types/node": "^7.0.12",
Contenu de 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"
]
}
J'utilise grunt-ts avec la configuration suivante pour exécuter la tâche ts.
ts: {
app: {
tsconfig: {
tsconfig: "./tsconfig.json",
ignoreSettings: true
}
},
...
J'ai essayé avec la solution mentionnée dans I get: [ts] 'Promise' se réfère uniquement à un type, mais est utilisé comme valeur ici mais pas de chance.
javascript
typescript
promise
kalyanvgopal
la source
la source
return
.responsePromise = new Promise((resolve, reject) => { reject(new Error("missing is needed data"))})
Je l'ai essayé. Mais cela n'a pas résolu le problème.responsePromise
déclaré exactement ?Réponses:
J'ai eu le même problème avec le
aws-sdk
et je l'ai résolu en utilisant"target": "es2015"
. Ceci est montsconfig.json
dossier.la source
@types/aws-lambda
sont périmés. Amazon fournit les types Typescript avec le SDK officiel . Il n'est pas nécessaire de définir DefinitelyTyped.Rencontrez la même erreur aujourd'hui et résolvez-la avec:
Mettre à jour:
ajouter:
la source
import {Promise} from 'es6-promise'
;import { Promise } from '../node_modules/es6-promise/es6-promise';
, cependant, semble fonctionner correctement. Pourquoi TS ne pourrait-il pas trouver les typages installés?J'ai résolu ce problème en ajoutant le code ci-dessous au fichier tsconfig.json.
la source
Résolu en modifiant la cible dans compilerOptions.
la source
Voici mon conseil. Testé avec vscode 1.21.1 (sur MAC)
Mettez sous config à tsconfig.json
dans compilerOptions
Redémarrez IDE (cette action est requise: D)
la source
J'ai eu cette erreur mais je l'ai résolue en utilisant cette commande, mon nom de fichier ts est promises-fs.ts:
et l'erreur est partie
la source
Ajoutez la ligne ci-dessous au fichier où l'erreur est générée.Cela devrait résoudre le problème
PS: ce n'est certainement pas la solution optimale
la source
TS
si vous allez faire quelque chose comme ça. Je veux dire à quoi ça sert alors?!Enfin, tsc a commencé à fonctionner sans aucune erreur. Mais de multiples changements. Merci à Sandro Keil , Pointy & unional
tsconfig.json
Gruntfile.js
la source
J'ai eu le même problème avec dactylographié et le
aws-sdk
. La solution était de changer la cible enes6
.Mon
tsconfig.json
dossier complet :la source
J'ai eu le même problème jusqu'à ce que j'ajoute le tableau lib suivant dans typeScript 3.0.1
tsconfig.json
la source
Eh bien, cela peut être contre-intuitif, mais j'ai résolu ce problème en ajoutant
esnext
à monlib
.Le FIX, comme suggéré par le compilateur, est de
la source
Core-js n'a pas fonctionné pour moi car cela a causé d'autres problèmes, cependant, l'installation de la dernière version de
npm i @types/es6-promise --save-dev
s'est simplement débarrassée des problèmes. Les problèmes pour moi provenaient de la compilation d'un sdk qui utilisait rxjs. Voici l'erreur que j'obtenais:la source
Si vous utilisez le référentiel DefinatelyTyped dans votre projet, vous rencontrez peut-être ce problème récent .
Une solution de contournement décente que vous pourriez utiliser (autre que d'attendre une version mise à jour du fichier de définitions ou de refactoriser votre code TS) consiste à spécifier une version explicite + une version pour les typages core-js plutôt que de laisser Visual Studio choisir le dernier / le plus récent . J'en ai trouvé un qui ne semble pas affecté par ce problème (dans mon cas du moins), vous pouvez l'utiliser en remplaçant la ligne suivante de votre fichier package.jso n:
Avec le suivant:
Cela a résolu mon problème pour de bon. Cependant, il est fortement recommandé de supprimer la version explicite + la référence de build dès que le problème sera publié.
Pour plus d'informations sur ce problème, vous pouvez également lire cet article de blog que j'ai écrit sur le sujet.
la source
J'ai eu le même problème et cela m'a sauvé du problème en seconde:
écrivez dans la console ceci:
dans le fichier où le problème est copier-coller ceci:
la source
Changez simplement la cible en "ES2017" dans le fichier tsconfig.json.
c'est mon fichier tsconfig.json
la source
npm i --save-dev @ types / es6-promise
après la commande up, vous feriez mieux de vérifier tsconfig.json pour vous assurer que la "cible" doit être supérieure à "es6". peut-être que tsc ne prend pas encore en charge es5.
la source
Aucune des réponses votées ici ne fonctionne pour moi. Voici une solution garantie et raisonnable. Placez-le en haut de tout fichier de code utilisant Promise ...
la source
Ayant passé beaucoup de temps à essayer de résoudre ce problème. Je n'ai eu aucune chance avec aucune solution proposée ici ou ailleurs.
Mais plus tard, j'ai réalisé qu'il ne s'agissait pas simplement de résoudre le problème. Mais vous devez également redémarrer le VSCODE pour qu'il prenne effet.
la source
J'ai eu la même erreur et je l'ai corrigée avec cette configuration:
Fichier: tsconfig.json
la source
Veuillez noter que si vous exécutez la commande tsc avec un nom de fichier, par exemple:
alors le fichier de configuration du compilateur tsconfig.json est ignoré. La solution consiste à exécuter soit la commande tsc seule, auquel cas tous les fichiers .ts du répertoire seront compilés, sauf si vous avez modifié le tsconfig.json pour inclure un ensemble de fichiers.
voir 'utilisation de la propriété files' ... https://www.typescriptlang.org/docs/handbook/tsconfig-json.html
la source
La même erreur ici. J'ai corrigé cela, en utilisant "module": "ES6" dans tsconfig.
la source
Je me suis débarrassé de cette même erreur en
index.ts
avec ces propriétés combinées:Dans tsconfig.json:
Et dans package.json:
la source