Ошибка tsconfig.json: "Build:No inputs were found in config file" в TypeScript и ASP.NET Core
Причина ошибки
Ошибка "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.
Ответов пока нет.
Войдите чтобы оставить ответ