javascript - Funkcia TypeScript „Kompilovať pri uložení“ nefunguje vo Visual Studio 2015


Funkcia „Kompilovať pri uložení“ mi nefunguje po aktualizácii na Visual Studio 2015. Keď urobím zmenu v súbore .ts v mojom projekte a uložím ho, stavový riadok v dolnej časti IDE zobrazuje Výstup(y) úspešne vygenerované, ale vygenerovaný súbor .js sa nezmení.

Tu je to, čo som vyskúšal:

  • pridanie nasledujúceho do koreňového prvku <Project> v mojom .csproj:

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • začiarknutie a odčiarknutie možnosti „Automaticky kompilovať súbory TypeScript, ktoré nie sú súčasťou projektu“ v Nástroje -> Možnosti -> TypeScript -> Projekt:

  • dvojitá kontrola, aby som sa uistil, že „Kompilovať pri ukladaní“ je zaškrtnuté v vlastnostiach zostavenia TypeScript môjho projektu:

Čo mi chýba?

Ako poznámku, krok kompilácie TypeScriptu funguje podľa očakávania, keď ho spustí bežná kompilácia.

Odpoveď č. 1

Pre mňa to bola táto možnosť v tsconfig.json:

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

Reštartujte Visual Studio, aby sa táto zmena prejavila.

Odpoveď č. 2

Dnes som narazil na tento problém: Riešil som ho použitím novej kompilátorovej možnosti "watch":true, ktorá je dostupná aj cez JSON vo väčšine najnovších verzií TypeScriptu:

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

Po tom, čo som to urobil, som musel vyriešiť ďalší problém súvisiaci s nasledujúcou chybou, ktorá sa objavila v okne výstupu:

Object doesn't support property or method 'watchFile'

Ukázalo sa, že môj systém používal zastaranú verziu TypeScript (1.0.x), napriek tomu, že som si bol istý, že mám novšiu, ktorá prišla s Visual Studio 2015 Update 1 (1.7). Ak narazíte na tento problém, môžete si svoju verziu tsc ľahko skontrolovať zadaním tsc -v v príkazovom riadku.

Ak je uvedené 1.0.x alebo čokoľvek < 1.7, je to pravdepodobne preto, že máte v premennej prostredia PATH nejaké staré odkazy. Uistite sa, že máte nainštalovanú verziu 1.7 alebo novšiu skontrolovaním vo vašom priečinku Microsoft SDKs, ktorý používa Visual Studio na inštaláciu balíkov TypeScript, keď sa aktualizujú:

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

Ak nie, aktualizujte podľa potreby. Otvorte CPanel > System > Advanced > Environment Variables, vyberte System Variables a kliknite na Edit; prehliadnite zoznam a hľadajte akúkoľvek referenciu na priečinok TypeScript, jednu z nich zmeňte tak, aby ukazovala na vašu najnovšie nainštalovanú verziu TypeScript (1.7 alebo vyššiu) a odstráňte všetky iné duplicitné. Pozrite si aj snímku obrazovky nižšie:

Pre ďalšie podrobnosti si prečítajte tento príspevok na mojom blogu.

Odpoveď č. 3

Riešenie:

Pre mňa, a som si celkom istý, že to isté platí aj pre ostatných, to bolo spôsobené chybou v tsconfig.json.

Musíte pridať "compileOnSave": true. Ale v globálnej sekcii, nie vo vnútri 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"
  ]
}

S pozdravom,

Anders Obaja Basechat.

Súvisiace články