Avatar ·

Ошибка tsconfig.json: "Build:No inputs were found in config file" в TypeScript и ASP.NET Core

Привет! Я новичок в TypeScript и пытаюсь настроить проект на ASP.NET Core с Visual Studio 2015. У меня есть tsconfig.json в корне проекта, но когда я пытаюсь собрать решение, появляется ошибка: "Build:No inputs were found in config file. Specified 'include' paths were '["**/*"]' and 'exclude' paths were '["node_modules","bower_components","jspm_packages"]'." Вот мой tsconfig.json: ```json { "compilerOptions": { "target": "es5", "module": "commonjs", "sourceMap": true, "outDir": "./wwwroot/js" }, "include": [ "**/*" ], "exclude": [ "node_modules", "bower_components" ] } ``` У меня есть папка Scripts с файлами .ts, но они почему-то не находятся. В проекте также есть папка wwwroot, куда я хочу сохранять скомпилированные .js файлы. Я пробовал перезагружать Visual Studio, удалять node_modules и переустанавливать пакеты, но ошибка остаётся. Что я делаю не так? Может быть, нужно указать конкретный путь к исходникам? Или проблема в том, что Visual Studio не видит файлы .ts? Буду благодарен за подробное объяснение. <<>>

Причина ошибки

Ошибка "No inputs were found in config file" возникает, когда TypeScript компилятор не находит ни одного файла .ts или .tsx в указанных путях include. В вашем случае проблема в том, что include: ["**/*"] ищет все файлы (включая .json, .js, .html и т.д.) в корне проекта, но TypeScript игнорирует не-исходные файлы. Если в корне проекта нет ни одного .ts файла, компилятор выдаёт эту ошибку.

Решение: явно укажите папку с исходниками

Вместо include: ["**/*"] укажите конкретную папку, где лежат ваши TypeScript файлы. Например, если они находятся в Scripts, измените tsconfig.json так:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./wwwroot/js"
  },
  "include": [
    "Scripts/**/*"
  ],
  "exclude": [
    "node_modules",
    "bower_components"
  ]
}

Обратите внимание: "Scripts/**/*" означает «все файлы и подпапки внутри папки Scripts». Теперь компилятор будет искать .ts файлы только там.

Дополнительные рекомендации

  • Проверьте, что файлы имеют расширение .ts. Иногда новички называют файлы .txt или .js. Убедитесь, что у вас есть хотя бы один файл типа app.ts в папке Scripts.
  • Если у вас нет папки Scripts — создайте её. Или используйте другую папку, например src, и тогда укажите "include": ["src/**/*"].
  • Очистите кэш Visual Studio: иногда студия кэширует старую конфигурацию. Закройте проект, удалите папки .vs (скрытая), bin, obj и переоткройте решение.
  • Проверьте, не пропущен ли корневой файл. Если вы хотите, чтобы TypeScript компилировал файлы из корня проекта (например, index.ts), то можно оставить include: ["*"] — это будет искать файлы только в корне, без подпапок.

Пример рабочей структуры

Предположим, у вас проект ASP.NET Core со следующей структурой:

/MyProject
  /Scripts
    app.ts
    /components
      header.ts
  /wwwroot
    /js (сюда пойдут скомпилированные файлы)
  tsconfig.json

Тогда tsconfig.json должен выглядеть так:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./wwwroot/js"
  },
  "include": [
    "Scripts/**/*"
  ],
  "exclude": [
    "node_modules",
    "bower_components",
    "wwwroot"
  ]
}

После этого сохраните файл, пересоберите проект — ошибка должна исчезнуть. Если нет, попробуйте запустить компилятор вручную через командную строку:

tsc --project tsconfig.json

Это покажет более детальную ошибку, если она есть.

Важно для ASP.NET Core

В Visual Studio 2015 интеграция TypeScript может быть нестабильной. Убедитесь, что у вас установлен последний пакет Microsoft.TypeScript.MSBuild через NuGet. Также проверьте, что в .csproj файле нет конфликтующих настроек TypeScript (например, двойных <TypeScriptCompile>).

<<>>

Альтернативный подход: использование rootDir и files

Если вы не хотите использовать папку Scripts, а предпочитаете хранить файлы прямо в корне проекта, можно явно перечислить их в опции files:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "./wwwroot/js",
    "rootDir": "./"
  },
  "files": [
    "app.ts",
    "components/header.ts"
  ]
}

Этот способ лучше, если у вас мало файлов и вы не хотите, чтобы компилятор случайно подхватил лишние .ts файлы из других папок (например, из node_modules, которые вы забыли исключить).

Минус: каждый новый файл нужно добавлять вручную. Для больших проектов это неудобно, поэтому чаще используют include с масками.

Для Visual Studio: проверка Target

Иногда ошибка возникает из-за того, что Visual Studio пытается использовать старую версию TypeScript. Обновите TypeScript SDK через Tools → Extensions and Updates до версии 2.0 или выше. После обновления перезагрузите Visual Studio и очистите решение (Build → Clean Solution).

Если ничего не помогает, временно отключите автоматическую компиляцию TypeScript в Visual Studio и настройте отдельный скрипт в package.json для сборки через tsc:

{
  "scripts": {
    "build": "tsc"
  }
}

Запускайте сборку через командную строку: npm run build.