tapuscrit: erreur TS2693: "Promesse" ne se réfère à un type, mais est utilisé en tant que valeur ici
Je suis en train d'utiliser la Machine pour mon AWS Lambda et j'obtiens les erreurs suivantes où jamais je utiliser promesses.
erreur TS2693: "Promesse" ne se réfère à un type, mais est utilisé en tant que valeur ici.
J'ai essayé d'utiliser les variations suivantes dans le code
À l'aide de la Promesse du constructeur
responsePromise = new Promise((resolve, reject) => {
return reject(new Error(`missing is needed data`))
})
à l'aide de la Promesse.rejeter
responsePromise = Promise.reject(new Error(`Unsupported method "${request.httpMethod}"`));
Versions
Sont les suivantes versions dans mon dev dépendances:
"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"
]
}
Je suis en utilisant grunt-ts avec la configuration suivante pour l'exécution des ts tâche.
ts: {
app: {
tsconfig: {
tsconfig: "./tsconfig.json",
ignoreSettings: true
}
},
...
J'ai essayé avec la solution mentionnée dans J'obtiens: [ts] "Promesse" ne se réfère à un type, mais est utilisé en tant que valeur ici mais pas de chance.
- Pas de valeur de retour est nécessaire pour la fonction de callback passé en à la Promesse du constructeur. Juste se débarrasser de
return
. - Entendez-vous comme cela?
responsePromise = new Promise((resolve, reject) => { reject(new Error("missing is needed data"))})
Je l'ai essayé. Mais il n'a pas hep avec le problème. - Oui. JavaScript ne se soucie pas si vous retourner une valeur ou pas, mais elle ne fait pas attention. Tapuscrit, cependant, ne de soins.
- L'a obtenu. Mais pourquoi ne tsc ne parvient pas à compiler toute la saveur de Promose.résoudre ou d'une Promesse.rejeter?
- Que, je ne sais pas. Comment exactement est
responsePromise
déclaré? - J'ai essayé de le définir comme ça.
let responsePromise: Promise<void> | Promise<any> | Promise<Error> = Promise.reject('Unknown error');
. mais il n'a pas aidé. noEmit
? typescriptlang.org/docs/handbook/compiler-options.html- Pointu, si la fonction doit renvoyer une valeur, le "retour" mot-clé est certainement nécessaire. Je suis en cours d'exécution dans ce problème aussi, et c'est certainement sur le fait que la Machine est d'avoir des problèmes de manipulation de l'objet promise correctement, et n'a rien à voir avec une quelconque kalyanvgopal est mauvais parce que son code est très bien.
- pour ceux qui essaient de tout ci-dessous les réponses et ne trouvant pas de chance, assurez-vous que votre
tsconfig.json
est dans le bon répertoire! le mien était dans un répertoire ci-dessous le fichier qui me donnait le ts2693 erreur.
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème avec la
aws-sdk
et je l'ai résolu en utilisant"target": "es2015"
. C'est montsconfig.json
fichier.@types/aws-lambda
ne sont pas à jour. Amazon navires Tapuscrit types avec le SDK officiel. Il n'est pas nécessaire pour DefinitelyTyped.Rencontre la même erreur aujourd'hui et résolu avec:
Mise à jour:
ajouter:
import {Promise} from 'es6-promise'
;import { Promise } from '../node_modules/es6-promise/es6-promise';
, cependant, semble bien fonctionner. Pourquoi serait-TS incapable de trouver la installé typings?J'ai résolu ce problème par l'ajout de code ci-dessous pour tsconfig.fichier json.
Résolu en changeant le cible dans compilerOptions.
Voici mon conseil. Testé avec vscode 1.21.1 (sur MAC)
Mettre en dessous de config pour tsconfig.json
en
compilerOptions
Redémarrer IDE (cette action est nécessaire 😀 )
J'ai eu cette erreur, mais je l'ai résolu en utilisant cette commande, mon ts nom du fichier est des promesses-fs.ts:
et l'erreur a disparu
Ajouter en dessous de la ligne de fichier dans lequel l'erreur est levée.Cela devrait résoudre le problème
P. S: Ce n'est certainement pas la solution optimale
TS
si vous allez faire quelque chose comme ça. Je veux dire, quel est l'intérêt alors?!Enfin tsc commencé à travailler sans erreurs. Mais de multiples changements. Grâce à Sandro Keil, Pointu & unional
tsconfig.json
Gruntfile.js
Eu le même problème avec la machine et le
aws-sdk
. L'résoudre était de changer la cible dees6
.Ma
tsconfig.json
fichier:J'ai eu le même problème jusqu'à ce que j'ai ajouté ce qui suit lib tableau en texte dactylographié 3.0.1
tsconfig.json
De base-js ne fonctionne pas pour moi car il a créé d'autres problèmes, cependant, il suffit d'installer la dernière version de
npm i @types/es6-promise --save-dev
se débarrasser des problèmes. Les questions pour moi, découle de la compilation d'un kit de développement qui a été à l'aide de rxjs. Voici l'erreur que je recevais:Aucun des haut-voté réponses ici, le travail pour moi. Ici est une garantie et solution raisonnable. Mettre cette près du haut de chaque fichier de code qui utilise Promesse...
Si vous êtes à l'aide de la DefinitelyTyped référentiel dans votre projet, vous souffrez peut-être d' cette issue récente.
Un décent solution de contournement, vous pouvez utiliser (autre que d'attendre une mise à jour de construire des définitions de fichier ou la refactorisation de votre TS code) est de spécifier explicitement la version+de construire pour le core-js typings plutôt que de laisser Visual Studio choisir les plus récentes/les plus récentes. J'en ai trouvé un qui semble ne pas être affectée par ce problème (dans mon cas au moins), vous pouvez l'utiliser en remplacement de la ligne suivante de votre paquet.json fichier:
Avec le suivant:
Cela a réglé mon problème pour de bon. Cependant, est fortement recommandé de supprimer de manière explicite de la version+de construire de référence dès que le problème sera libéré.
Pour plus d'info concernant ce problème, vous pouvez également lire ce post de blog que j'ai écrit sur le sujet.
Eh bien, cela pourrait être contre-intuitif, mais j'ai résolu ce problème en ajoutant
esnext
à monlib
.Le CORRECTIF, comme suggéré par le compilateur est à
J'ai eu le même problème et ce qui m'a sauvé de le problème dans le deuxième:
écrire dans la console:
dans le fichier où le problème est de copier coller ceci:
Il suffit de changer la cible de "ES2017" dans le tsconfig.fichier json.
c'est mon tsconfig.fichier json
mnp i --save-dev @types/es6-promesse
après la commande, vous feriez mieux de vérifier tsconfig.json assurez-vous que la "cible" doit grand que "es6". peut-être tsc pas en charge l'es5 encore.
Avoir passé beaucoup de temps à essayer de résoudre ce problème. J'ai pas eu de chance avec toute solution ici ou d'ailleurs.
Mais alors ensuite rendu compte que ce n'était pas seulement à la résolution du problème. Mais vous avez aussi besoin de REDÉMARRER le VSCODE pour qu'il prenne effet.
J'ai eu le même message d'erreur et je l'ai réparé avec cette configuration:
Fichier: tsconfig.json