Код Visual Studio: скомпилировать модуль typescript
Я только что загрузил новый код Visual Studio, и мое первое впечатление очень позитивно. Для typescript, intellisense прекрасно работает.
Однако есть странная проблема: VS Code, похоже, не может скомпилировать модули typescript.
Этот код:
/// <reference path="../definitions/react.d.ts"/>
import React = require("react");
отлично компилируется на cmd,
tsc --module commonjs main.ts
но в VS Code вторая строка выделена красным цветом, и редактор жалуется:
не может компилировать внешние модули, если не указан флаг "-module"
Конечно, любой код typescript, который использует модули, должен быть скомпилирован с этим флагом. Но если IDE знает об использовании модулей, почему он не устанавливает флаг? typescript код без модулей компилируется при сохранении без проблем.
Я думаю, что мне не хватает конфигурационного файла конфигурации компилятора. Что-то подобное существует? Где я могу его найти?
UPDATE
Я добавил файл tsconfig.json:
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"sourceMap": true
}
}
Это действительно устраняет ошибку. К сожалению, IDE больше не компилирует мой код. Сначала я подумал, что config.json будет только отключать сообщение об ошибке, но он делает больше, чем это. Intellisense теперь работает в файле образца. Если я набираю React
, автозаполнение запускается и, по-видимому, знает React, потому что отображаются значимые предложения.
Теперь, почему VS Code не компилирует файл в js? Я попытался настроить бегун задачи для выполнения этой задачи, но он не работает:
{
"version": "0.1.0",
// The command is tsc.
"command": "tsc",
// Show the output window only if unrecognized errors occur.
"showOutput": "silent",
// Under windows use tsc.exe. This ensures we don't need a shell.
"windows": {
"command": "tsc.exe"
},
// args is the HelloWorld program to compile.
"args": ["--module commonjs","${file}"],
// use the standard tsc problem matcher to find compile problems
// in the output.
"problemMatcher": "$tsc"
}
Если я сохраню файл, ничего не происходит, даже если я явно запускаю задачу сборки, нет ответа. Имя задачи, которую я редактировал, - tsc, я тоже пытался ее запустить. Нет эффекта. Затем я изменил аргументы на "args": ["--module commonjs","main.ts"]
, Нет ответа.
UPDATE
Единственный способ, с которым работает рабочий стол, состоит в следующем:
"args": ["${file}"],
"isShellCommand": true,
Вот выходы:
-
"args": ["-p"],
-
"args": ["-p", "."],
ошибка TS5023: неизвестная опция компилятора 'p'.
ошибка TS6053: Файл '.ts' не найден.
Ответы
Ответ 1
Сегодня я столкнулся с такой же проблемой. Я следил за этой ссылкой
http://blogs.msdn.com/b/typescript/archive/2015/04/30/using-typescript-in-visual-studio-code.aspx
После выполнения всех шагов настройки я запустил эту команду в командной строке и начал генерировать файлы JavaScript
npm install -g typescript
Нам нужно убедиться, что node и npm установлены и доступны через командную строку.
Причина, по которой я нашел его, не работает, потому что в tasks.json
мы указываем следующие параметры
"command": "tsc"
"isShellCommand": true,
Итак, визуальный студийный код пытается запустить команду tsc
в командной строке и не находит tsc
. Таким образом, установка typescript во всем мире с использованием npm решила проблему.
Ответ 2
У меня была та же проблема в другом проекте VS Code, и я понял, что VS Code использует другую версию Typescript.
Вот выходы:
-
"args": ["-p"],
-
"args": ["-p", "."],
ошибка TS5023: неизвестная опция компилятора 'p'.
ошибка TS6053: Файл '.ts' не найден.
У меня был 1.5.3 от npm, и он использовал 1.0.3, потому что я установил в систему Typescript также в Microsoft SDK, и он был доступен из PATH.
Решение было удалено из глобального и пользовательского PATH этого Typescript Microsoft SDK для доступа к новейшей версии из npm, которая может управлять -p args.
Попробуйте выполнить команду tsc только с -v аргументом, чтобы проверить, является ли она правильной версией.
Ответ 3
Что касается компиляции кода, файл tasks.json должен выглядеть следующим образом:
{
"version": "0.1.0",
"command": "tsc",
"showOutput": "silent",
"windows": {
"command": "tsc.exe"
},
"args": ["-p", "."],
"problemMatcher": "$tsc"
}
Если вы работаете под Windows и устанавливаете tsc как модуль node глобально, измените раздел Windows на:
"windows": {
"command": "tsc",
"isShellCommand": true
}
Аргументы -p .
говорят компилятору tsc искать файл tsconfig.json в корневой папке и использовать его для компиляции вашего проекта.
Ответ 4
Вам нужно создать файл tsconfig.json в корневом каталоге вашего проекта.
Установить "module": "commonjs"
базовый пример:
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"sourceMap": true
}
}
Ответ 5
У меня была та же проблема, и я нашел решение прямо здесь, в stackoverflow, представленном Стивом Фентоном:
код Visual Studio компилируется при сохранении.
Его предложение элегантно, соответствует действующим стандартам VS Code и работает сразу же, как описано. Добавьте это в Файл → Настройки → Ярлыки клавиш как перезапись:
[
{
"key": "ctrl+s",
"command": "workbench.action.tasks.build"
}
]