Подтвердить что ты не робот

Код 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'.

  • "args": ["."],

ошибка TS6053: Файл '.ts' не найден.

4b9b3361

Ответ 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'.

  • "args": ["."],

ошибка 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" 
    }
]