web-dev-qa-db-fra.com

Avertissement de décorateurs expérimentaux dans la compilation TypeScript

J'ai

La prise en charge expérimentale des décorateurs est une fonctionnalité susceptible d’être modifiée dans une version ultérieure. Définissez l'option 'experimentalDecorators' pour supprimer cet avertissement.

même mes compilerOptions dans tsconfig.json ont des paramètres:

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

Ce qui est étrange, c'est que certaines classes aléatoires qui utilisent des décorateurs ne montrent pas cet avertissement mais restent dans le même projet.

Qu'est-ce qui pourrait causer un tel comportement du compilateur TypeScript?

167
bensiu

Bien que VS Code soit un excellent éditeur pour les projets TypeScript, il doit être relancé de temps en temps. Souvent, sans préavis, certains fichiers le font paniquer et se plaindre. Généralement, le correctif semble consister à enregistrer et à fermer tous les fichiers ouverts, puis à ouvrir tsconfig.json. Après cela, vous devriez pouvoir rouvrir le fichier incriminé sans erreur. Si cela ne fonctionne pas, faites mousser, rincez et répétez.

Si votre tsconfig.json spécifie ses fichiers source à l'aide du tableau files, IntelliSense ne fonctionnera correctement que si le fichier en question est référencé de sorte que VS Code puisse le trouver en parcourant l'arborescence du fichier d'entrée.

Edit: La commande 'reload window' (ajoutée il y a bien longtemps maintenant) devrait résoudre ce problème une fois pour toutes.

148
linguamachina

Il me faut ajouter les éléments suivants dans le fichier settings.json de vscode pour supprimer l'avertissement.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Préférences -> Paramètres

enter image description here

138
Manoj Paul

Cette erreur se produit également lorsque vous choisissez le dossier "src" pour votre dossier d'espace de travail.

Lorsque le dossier racine, dossier dans lequel se trouvent "src", "node_modules", l'erreur disparaît

86
Semir Deljić

ajouter TypeScript.tsdk à mon .vscode/settings.json:

"TypeScript.tsdk": "node_modules/TypeScript/lib"
23
beewest

dans votre projet, créez le fichier tsconfig.json, puis ajoutez ces lignes.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}
22
Muhammed Moussa

Fichier -> Préférences -> Paramètres

14
Dmitriy Botov
"javascript.implicitProjectConfig.experimentalDecorators": true

Va résoudre ce problème.

10
Rajesh Pal

Cette réponse est destinée aux personnes utilisant un projet Javascript et non un projet TypeScript. Au lieu d'un fichier tsconfig.json, vous pouvez utiliser un fichier jsconfig.json.

Dans le cas particulier où le décorateurs vous avertit que vous souhaitez écrire dans le fichier:

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}

En ce qui concerne les comportements bogués, il est toujours préférable de spécifier "inclure" dans le fichier de configuration et de redémarrer l'éditeur. Par exemple.

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}
9
Pere Pages

Ouvrez le fichier settings.json à l’emplacement suivant <project_folder>/.vscode/settings.json

ou vous pouvez ouvrir le fichier depuis le menu comme mentionné ci-dessous

VSCode -> File -> Preferences -> Workspace Settings

experimentalDecorators settings

Puis ajoutez les lignes suivantes dans le fichier settings.json

{
    "TypeScript.tsdk": "node_modules/TypeScript/lib",
    "enable_TypeScript_language_service": false
}

C'est tout. Vous ne verrez aucun avertissement/erreur concernant ' experimentalDecorators '

7

Ajoutez les lignes suivantes dans tsconfig.json et redémarrez VS Code.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}
7
Geetesh

J'ai eu ce problème récemment sous Visual Studio 2017 - il s'est avéré que cela était dû à une "fonctionnalité" de VS - en ignorant tsconfig.json lorsque l'action de génération n'est pas définie sur Conten .

Donc, changer l’action Construire en Contenu et recharger la solution a résolu le problème.

7
Pawel Gorczynski

Ne pas insister sur le point, mais assurez-vous d’ajouter ce qui suit à

  • Paramètres de l'espace de travail, pas les paramètres de l'utilisateur

sous Fichier >> Préférences >> Paramètres

"javascript.implicitProjectConfig.experimentalDecorators": true

cela a résolu le problème pour moi et j'ai essayé quelques suggestions que j'ai trouvées ici et à d'autres endroits.

7
petey m
  1. Ouvrez VScode.
  2. Appuyez sur ctrl + virgule
  3. Suivez les instructions dans le capture d'écran
    1. Recherche sur les décorateurs expérimentaux
    2. Éditer
3
Mostafa

Par souci de clarté et de stupidité.

1) Ouvrez .vscode/settings.json.

2) Ajoutez "TypeScript.tsdk": "node_modules/TypeScript/lib" dessus.

3) Enregistrez-le.

4) Redémarrez le code Visual Studio.

3
LEMUEL ADANE

Vérifiez que vous avez ouvert dans votre code VS le dossier de l'ensemble du projet et pas uniquement le dossier src, car si vous ouvrez uniquement le fichier src, le fichier ts.config.json (situé dans le dossier du projet) ne sera pas dans la portée et VS ne reconnaîtra pas les paramètres des décorateurs expérimentaux.

Dans mon cas, cela corrigeait tous les problèmes liés à ce problème.

3
dayanrr91

Si vous utilisez cli pour compiler des fichiers * .ts, vous pouvez définir experimentalDecorators à l'aide de la commande suivante:

 tsc filename.ts --experimentalDecorators "true"
2
Koji D'infinte

Si vous travaillez dans Visual studio. Vous pouvez essayer ce correctif

  1. Déchargez votre projet de visual studio
  2. Allez dans le répertoire de base de votre projet et ouvrez le fichier "csproj".
  3. Ajoutez TypeScriptExperimentalDecorators à cette section, comme indiqué dans l'image

    enter image description here

    1. Rechargez le projet dans Visual studio.

voir plus de détails sur this location.

2
kumar chandraketu

Ouvrir le dossier du projet entier au lieu de nom-projet/src

tsconfig.json est hors du dossier src

2
Andrew Yavorsky

J'ai corrigé l'avertissement en supprimant "baseUrl": "" du fichier tsconfig.json

1
D. Greene

J'ai fait face au même problème lors de la création d'un Injectable Services dans Angular 2. J'ai toutes les choses en place dans tsconfig.json. Je n'ai toujours pas eu cette erreur à la ligne ColorsImmutable.

@Injectable()
export class ColorsImmutable {

Et le correctif consistait à enregistrer le service au niveau du module ou au niveau du composant à l'aide du tableau providers.

providers:[ColorsImmutable ],
1
Mohammad Javed

Vous pouvez également essayer avec ng build. Je viens de reconstruire l'application et maintenant, elle n'est pas conforme.

0
Leandro hereñu

J'ai ajouté cette option à tsconfig.json, "baseUrl": "front-end". Remplacez front-end par le nom de votre projet angular-cli.

0
Sean Maxwell

Vous pouvez rencontrer ce problème si vous ouvrez un fichier TS qui existe en dehors du projet. Par exemple, j'utilise Lerna et j'avais un fichier ouvert depuis un autre paquet. Bien que cet autre paquet ait son propre tsconfig avec des décorateurs expérimentaux, VsCode ne l'honore pas.

0
sparebytes