web-dev-qa-db-fra.com

La fonctionnalité "Compiler à l'enregistrement" de TypeScript ne fonctionne pas dans Visual Studio 2015

La fonctionnalité "Compiler à l'enregistrement" ne fonctionne plus pour moi après la mise à niveau vers Visual Studio 2015. Lorsque je modifie un fichier .ts dans mon projet et que je l'enregistre, la barre d'état au bas de IDE indique Output(s) generated successfully , mais le fichier .js généré ne change pas.

Voici ce que j'ai essayé:

  • ajouter ce qui suit à l'élément <Project> racine dans mon .csproj:

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • cochant et décochant l'option "Compiler automatiquement les fichiers TypeScript ne faisant pas partie d'un projet" dans Tools -> Options -> TypeScript -> Project:

     enter image description here

  • double vérification pour vous assurer que "Compile à l'enregistrement" est coché dans les propriétés TypeScript Build de mon projet:

     enter image description here

Qu'est-ce que je rate?

De plus, l'étape de compilation TypeScript fonctionne comme prévu lorsqu'elle est déclenchée par une génération normale.

75
Nathan Friend

Ce problème semble avoir été résolu avec la mise à jour la plus récente de l'extension TypeScript Language Services.

Voir cette réponse pour des instructions sur l'application de cette mise à jour.

5
Nathan Friend

Pour moi, c’était cette option dans tsconfig.json:

"compileOnSave": true,
"compilerOptions": { ... },

Redémarrez Visual Studio pour que cette modification soit prise en compte.

128
Miłosz Wierzbicki

Je suis tombé sur ce problème aujourd'hui: je l'ai corrigé en utilisant la nouvelle option de compilateur "watch":true, également disponible via JSON dans les versions les plus récentes de TypeScript:

{
  "compilerOptions": {
    "watch": true
  }
}

Après cela, je devais résoudre un autre problème lié à l'erreur suivante qui apparaissait dans la fenêtre de sortie:

Object doesn't support property or method 'watchFile'

Il s'est avéré que mon système utilisait une version obsolète de TypeScript (1.0.x), bien que j'étais sûr d'en avoir une plus récente fournie avec Visual Studio 2015 Update 1 (1.7). Si vous rencontrez ce problème, vous pouvez facilement vérifier votre version de tsc en tapant tsc -v à partir d'une invite de commande.

S'il est écrit 1.0.x ou <1.7, c'est probablement parce que vous avez d'anciennes références dans votre variable d'environnement PATH. Assurez-vous que la version 1.7 ou ultérieure est installée en consultant le dossier de votre Kit de développement logiciel (SDK) Microsoft, qui est celui utilisé par Visual Studio pour installer les packages TypeScript à mesure de leur mise à jour:

C:\Program Files (x86)\Microsoft SDKs\TypeScript

Sinon, mettez à jour en conséquence. Ouvrez CPanel> System> Advanced> Variables d'environnement, sélectionnez Variables système et cliquez sur Edit; parcourez la liste en recherchant une référence au dossier TypeScript, modifiez-en une pour la faire pointer sur la version installée la plus récente de TypeScript (1.7 ou supérieur) et supprimez les autres copies. Voir aussi capture d'écran ci-dessous:

 enter image description here

Pour plus de détails, lisez cet article sur mon blog.

31
Darkseal

Solution:

Pour moi, et je suis sûr que c'est aussi le cas pour d'autres, cela était dû à une erreur dans le fichier tsconfig.json.

Vous devez ajouter "compileOnSave": true. Mais dans la section globale pas dans compilerOptions.

Wrong:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "compileOnSave": true

  },
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

Correct:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"

  },
"compileOnSave": true,
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

Meilleures salutations,

Anders Both Basechat.

4
Anders Both

Dans mon cas, j'avais installé Visual Studio Community 2015 avec VS 2012. J'utilisais Web Essentials for TypeScript en 2012, ce qui semblait être en conflit avec 2015.

La désinstallation de Web Essentials en 2012 a résolu le problème pour moi.

2
Christopher Thomas

Avec TypeScript 2, vous devez supprimer "outDir": de votre tsconfig. Corrige le bug pour moi dans Visual Studio. 

2
Yvan

Le "compileOnSave": true, ne fonctionnait pas pour moi. J'ai finalement compris que Visual Studio n'honore pas la valeur "compileOnSave": true, si elle est définie dans un autre fichier .json que vous étendez. Il doit être à la racine pour que cela fonctionne.

1
Daryl

Dans les propriétés du projet -> "TypeScript Build", vous pouvez également simplement décocher "Ne pas émettre de sorties si des erreurs sont signalées". Le faire cocher semble désactiver la transmission lors de la sauvegarde, en cas d'erreur ou non.

1
Dominic Williams

localisez le fichier, à savoir C:\file.ts, dans votre terminal/cmd et tapez

tsc file.ts -w // watches for file changes and converts on save
1
WasiF

Exact même problème ici. J'utilise Visual Studio 2015 mise à jour 3 et TypeScript 2.9.2.0. Dans Outils/Options/Projets et solutions/Outils Web externes, j'ai mis à niveau $ (PATH) à la deuxième position. Avec toutes ces configurations, compileOnSave: true ne fonctionne pas pour moi. La solution de contournement consiste à ouvrir une ligne de commande, exécuter ng build --watch sur le côté et laisser le noeud se charger de la compilation automatique

0
Yue Yin