it-roy-ru.com

TypeScript "Компиляция при сохранении" не работает в Visual Studio 2015

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

Вот что я попробовал:

  • добавив следующее к корневому элементу <Project> в моем .csproj:

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • отметьте и снимите флажок «Автоматически компилировать файлы TypeScript, которые не являются частью проекта» в Tools -> Options -> TypeScript -> Project:

     enter image description here

  • двойная проверка, чтобы убедиться, что «Компиляция при сохранении» отмечена в свойствах TypeScript Build моего проекта:

     enter image description here

Что мне не хватает?

Как примечание, шаг компиляции TypeScript работает должным образом, когда запускается обычной сборкой.

75
Nathan Friend

Эта проблема, похоже, была решена с помощью самого последнего обновления расширения TypeScript Language Services.

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

5
Nathan Friend

Для меня это была опция в tsconfig.json:

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

Перезапустите Visual Studio, чтобы изменения вступили в силу.

128
Miłosz Wierzbicki

Я наткнулся на эту проблему сегодня: я исправил ее, используя новую опцию компилятора "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> System> Advanced> Environment Variables, выберите System Variables и нажмите Edit; просмотрите список, ища любую ссылку на папку TypeScript, измените одну из них, чтобы она указала на вашу последнюю установленную версию TypeScript (1.7 или выше), и удалите все другие дубликаты. Смотрите также скриншот ниже:

 enter image description here

Для получения дополнительной информации читайте этот пост в моем блоге.

31
Darkseal

Решение:

Для меня, и я совершенно уверен, что это относится и к другим, это было связано с ошибкой в ​​tsconfig.json.

Вам нужно добавить "compileOnSave": true. Но в глобальном разделе не внутри 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"
  ]
}

С наилучшими пожеланиями,

Андерс оба Basechat.

4
Anders Both

В моем случае я установил Visual Studio Community 2015 вместе с VS 2012. Я использовал Web Essentials для TypeScript в 2012 году, который, казалось, конфликтовал с 2015 годом.

Удаление Web Essentials в 2012 году исправило эту проблему для меня.

2
Christopher Thomas

С TypeScript 2 вы должны удалить «outDir»: из вашего tsconfig. Исправьте ошибку для меня в визуальной студии. 

2
Yvan

"compileOnSave": true, не работал для меня. Наконец я понял, что Visual Studio не учитывает значение "compileOnSave": true,, если оно определено в другом файле .json, который вы расширяете. Это должно быть в корне, чтобы это работало.

1
Daryl

В свойствах проекта -> «Сборка TypeScript» вы также можете просто снять флажок «Не выдавать выходные данные, если сообщается об ошибках». Его проверка, кажется, деактивирует перенос при сохранении, где есть ошибка или нет.

1
Dominic Williams

найдите файл, то есть C:\file.ts в вашем terminal/cmd и введите

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

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

0
Yue Yin