Функція «Компіляція при збереженні» TypeScript не працює у Visual Studio 2015


83

Функція "Компілювати при збереженні" не працює для мене після оновлення до Visual Studio 2015. Коли я вношу зміни у .tsфайл у своєму проекті та зберігаю, у рядку стану внизу IDE відображається Output(s) generated successfully, але сформований .jsфайл не працює не змінюється.

Ось що я спробував:

  • додавши наступне до кореневого <Project>елемента в моєму .csproj:

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • перевірка та зняття прапорця "Автоматично компілювати файли TypeScript, які не є частиною проекту" у Tools -> Options -> TypeScript -> Project:

    введіть тут опис зображення

  • подвійна перевірка, щоб переконатися, що "Скомпілювати при збереженні", позначено у властивостях збірки TypeScript мого проекту:

    введіть тут опис зображення

Чого мені не вистачає?

Як додаткове зауваження, крок компіляції TypeScript працює належним чином, коли його ініціює звичайна збірка.


Переконайтесь, що файли JS фактично НЕ оновлюються. Я ненадовго зіткнувся з проблемою з VS2013, де «попередній перегляд JS» не оновлювався, але фактично оновлювалися файли JS. Відкрийте його вручну, щоб перевірити, чи оновлено код. Причина цього була невідома, але рішення полягало в тому, щоб вимкнути VS і відкрити його знову. Я ще не пробував створювати жодні файли TS у VS2015.
Jason H

1
Вони розбили його для RTM. Дивіться це питання stackoverflow.com/questions/31559653 / ...
Simon_Weaver

1
Я працюю, коли ви керуєте візуальною студією як адміністратор!
alisabzevari

@alisabzevari Дякую за пропозицію, але робота від імені адміністратора не вирішує цю проблему для мене.
Nathan Friend

Відповіді:


138

Для мене це був такий варіант у tsconfig.json:

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

Перезапустіть Visual Studio, щоб ця зміна набрала чинності.


Використовуючи angular2, оновив мій машинопис серед багатьох інших речей для rc1, і, природно, все зламалося, поки зрештою я не виявив, що це моя проблема. Не потрібно було, поки я не оновився до 1.8.10.
Джеймс,

4
так, додайте опцію в tsconfig.json і перезавантажте проект, якщо проект розміщений у рішенні VS. Тоді ts буде скомпільовано в js при збереженні.
ZZZ

1
Додавання "watch": trueдо compilerOptionsроботи для мене у Visual Studio 2015 Update 2 з Typescript 1.8.29.0
Вахід Амірі,

1
У якийсь момент, приблизно за часів TypeScript 2, Visual Studio перейшов від збереження цих параметрів у .csprojфайлі до простого використання tsconfig.json. Якщо властивості вашого проекту сторінка TypeScript не вимкнена, це, ймовірно, означає, що у вас встановлена ​​стара версія інструментів TypeScript для Visual Studio, і вам слід встановити microsoft.com/en-us/download/details.aspx?id=48593
cchamberlain

32

Сьогодні я натрапив на цю проблему: я виправив це за допомогою нової "watch":trueопції компілятора, яка також доступна через JSON в останніх версіях TypeScript:

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

Після цього мені довелося вирішити ще одну проблему, пов’язану з наступною помилкою, яка з’явилася у вікні виводу:

Object doesn't support property or method 'watchFile'

Виявилося, що в моїй системі використовується застаріла версія TypeScript (1.0.x), незважаючи на те, що я був впевнений, що у мене є новіша версія, яка постачається з Visual Studio 2015 Update 1 (1.7). Якщо ви зіткнулися з цією проблемою, ви можете легко перевірити версію tsc, набравши tsc -vв командному рядку.

Якщо там написано 1.0.xабо щось <1.7, це, мабуть, пов’язано з тим, що у вашій змінній середовища PATH є кілька старих посилань. Переконайтеся, що ви встановили 1.7 або пізнішу версію, перевіривши всередині папки Microsoft SDK, яка використовується Visual Studio для встановлення пакетів TypeScript при їх оновленні:

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

Якщо ні, оновіть відповідно. Відкрийте CPanel > Система > Додатково > Змінні середовища , виберіть Змінні системи та натисніть Редагувати ; перегляньте список, шукаючи посилання на папку TypeScript, змініть одне з них, щоб воно вказувало на найновішу встановлену версію TypeScript ( 1.7або вище), і видаліть будь-які інші дурні. Дивіться також знімок екрана нижче:

введіть тут опис зображення

Для отримання додаткової інформації прочитайте цю публікацію в моєму блозі.


1
Для мене на win10 ім'я у списку було "Шлях", а не системні змінні. Вибравши це (його значенням є довгий рядок, зв’язаний крапкою з комою), а потім клацніть редагувати, ви отримаєте модальне вікно, показане у цій відповіді. Моє рішення було НЕ додавати компіляції> watch> true, а встановити compileOnSave> true (на крок вище від компіляцій)
BobbyTables

1
Для мене встановлення цієї опції спричинило помилку збірки JsErrorScriptException (0x30001). Після пошуку я зіткнувся з цим питанням github.com/Microsoft/TypeScript/issues/7362 . Рішення Мілоша Вержбіцького (налаштування "compileOnSave") працює для мене, але лише після перезапуску VS.
fikkatra

У мене була та сама проблема. U та @zedd заощадили мені багато годин. Цей допис також корисний: ryadel.com/en/… .
Дуді

7

Рішення:

Для мене, і я впевнений, що це стосується і інших, це сталося через помилку в tsconfig.json.

Вам потрібно додати "compileOnSave": true. Але в глобальному розділі не всередині компілятораOptions.

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"
  ]
}

З найкращими побажаннями,

Андерс Обидва Basechat.



2

У моєму випадку я встановив Visual Studio Community 2015 поряд з VS 2012. Я використовував Web Essentials для машинопису в 2012 році, який, здавалося, суперечив 2015 році.

Видалення Web Essentials у 2012 році вирішило проблему для мене.


Я використовую VS Community, а видалення Web Essentials зробило для мене фокус. Дякуємо та проголосуємо!
Рей

2

За допомогою машинопису 2 вам потрібно видалити "outDir": з вашого tsconfig. Виправте помилку для мене у візуальній студії.


Де outdir tsconfig? Thx
січень,

@jay Ви не бачите опції у конфігураційному файлі tsconfig.json typecript?
Іван

1

У властивостях проекту -> «Збірка TypeScript» ви також можете просто зняти прапорець «Не видавати вихідні дані, якщо повідомляється про помилки». Якщо його перевірити, здається, дезактивує транпіляцію при збереженні, де є помилка чи ні.


1

Це "compileOnSave": true,не працювало для мене. Нарешті я з’ясував, що Visual Studio не виконує "compileOnSave": true,значення, якщо воно визначене в іншому .jsonфайлі, який ви розширюєте. Він повинен бути в корені, щоб він міг працювати.


1

знайдіть файл, тобто C: \ file.ts у вашому terminal/cmdі введіть

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

1

Перевірте, чи встановлено версію TypeScript, яка налаштована у проекті. Якось я не отримав жодного попередження про те, що у мене не встановлений TypeScript 3.7, але функція компіляції при збереженні перестала працювати безшумно.

Після встановлення TypeScript 3.7 він знову працював.


0

Точно така ж проблема тут. Я використовую Visual Studio 2015 оновлення 3 та TypeScript 2.9.2.0. В інструментах / варіантах / проектах та рішеннях / зовнішніх веб-інструментах я перевів $ (PATH) на другу позицію. З усіма цими конфігураціями compileOnSave: true для мене не працює. Рішення для вирішення проблеми - відкрити командний рядок, запустити ng build --watchзбоку і дозволити вузлу подбати про автоматичну компіляцію


0

Не впевнений, чи це комусь допоможе.

У мене хоч і виникали проблеми з компіляцією, але це було компіляція на збереження. У мене просто не було перемикання панелі інструментів для пошуку рішень для показу всіх файлів.

Файл був там, просто нетерпляче чекав, коли його додадуть до проекту.

введіть тут опис зображення


0

У мене була подібна, але не та сама проблема у Visual Studio 2019

  • У моєму проекті було використано TypeScript 2.9
  • У мене був встановлений TypeScript 3.8, і код справді скомпілювався, але не збирався компілювати при збереженні

Я встановив стару версію TypeScript 2.9, перезапустив VS, а потім вона спалахнула

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.