tsconfig.json: Build:在配置文件中找不到任何输入

418

我有一个ASP.NET核心项目,在尝试构建它时遇到了这个错误:

error TS18003: Build:No inputs were found in config file 'Z:/Projects/client/ZV/src/ZV/Scripts/tsconfig.json'. Specified 'include' paths were '["**/*"]' and 'exclude' paths were '["../wwwroot/app","node_modules/*"]'.
1>         The command exited with code 1.
1>       Done executing task "VsTsc" -- FAILED.

这是我的tsconfig.json文件:

{
  "compileOnSave": true,
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [ "es5", "dom" ],
    "module": "commonjs",
    "moduleResolution": "node",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "outDir": "../wwwroot/app/",
    "removeComments": false,
    "sourceMap": true,
    "target": "es6"
  },
  "exclude": [
    "../wwwroot/app",
    "node_modules/*"
  ]
}

这是一个bug还是我做错了什么?我最近将Visual Studio 2015升级到了更新3。有人之前遇到过这种情况吗?


22
这是预期行为。您需要有要编译的东西。 - Aluan Haddad
1
@AluanHaddad,你说得好像这是事实一样。你能否提供证据来支持你的说法? - Serj Sagan
4
https://github.com/Microsoft/TypeScript/issues/12762 - Aluan Haddad
你的源代码应该是在tsconfig中“include”指向的位置。 - Mohammad Kermani
默认的 tsconfig.json 没有 "include" 和 "exclude" 属性,所以我不得不添加两者。由于某种原因,似乎两者都是必需的。 - nth-chile
我遇到了这个问题,是因为我拥有的TypeScript文件是空的。 - Dhruv Anand
34个回答

686

TypeScript 期望在文件夹中至少有一个 TypeScript 文件才能进行编译。

为了解决这个错误,在 TypeScript 脚本文件夹(即您的 tsconfig 文件所在位置)中添加一个空的 TypeScript 文件即可。


151
这是什么意思? - Christian Matthew
56
这意味着你需要在你的应用所在的文件夹中至少添加一个TypeScript文件,以满足TypeScript编译器的要求。 - rood
33
脚本文件夹是指存储计算机程序脚本的文件夹。您能否详细说明一下? - San Jaisy
4
具有讽刺意味的是,我很久以前就使用了这个答案(添加了tsconfig并解决了这个问题)。当我将Vue添加到项目中时,问题再次出现...所以我不得不删除过去添加的tsconfig,然后它就可以工作了:P - joshmcode
6
谢谢。对我很有效。但是有人可以解释一下背后实际发生了什么吗? - DriLLFreAK100
显示剩余9条评论

323
您也可以尝试重新启动您的代码编辑器。这也很有效。

34
适用于 VSC。您可以在 VSC 中重新启动 TS 服务器。谢谢。 - mawburn
2
我一直在抓狂,直到我尝试了这个 :) - Mukesh Salaria
2
另一个选项是重新加载编辑器:CMD+Shift+P,然后输入Reload(开发者:重新加载窗口),最后按Enter。 - kimobrian254
1
比所选答案更好 - Saurabh Vishwakarma
1
这应该是被接受的答案。 - undefined

243

这可能是因为 TypeScript 服务器找不到由 include 数组描述的任何文件:

// tsconfig.json
{
  //...
  "include": [
    "./src/"
  ],
}

如果您正在使用 VSCode,您可以在编辑器内轻松地重新启动 TS 服务器以促使其重新评估文件,方法如下:

  1. 导航至任何 .ts.tsx 文件

  2. 打开命令面板(Mac 上为 CMD + SHIFT + P

  3. 运行 TypeScript: Restart TS server 命令:

    TypeScript - Restart TS Server


1
怎么获取_TypeScript_命令?我只有例如_File_、_Git_、_GitLens_等命令。 - Leo
7
@Leo 确保你在查找命令时正在查看一个 .js/.jsx/.ts/.tsx 文件。例如,当你查看一个 .html 文件时,该命令是不可用的。 - FrostyDog
重启 TS 服务器解决了我的问题,我之前不知道这个方法,谢谢。 - Jeremy
这个方法对我有效,其他方法并没有帮助因为我有.ts文件在那里。 - Noob
这是最好的答案,因为它更深入地描述了问题发生的原因(具体引用了tsconfig.json),并包括编辑器出现故障的情况。+1 - diggity
我把我的tsconfig移动到父目录后遇到了这个问题。这帮助我理解了非常简单的原因,谢谢。 - blwinters

41

这个项目中我完全没有使用TypeScript,所以处理这件事情相当令人沮丧。我通过在项目根目录中添加一个tsconfig.json和一个空的file.ts文件来解决这个问题。tsconfig.json包含以下内容:

{
  "compilerOptions": {

    "allowJs": false,
    "noEmit": true // Do not compile the JS (or TS) files in this project on build

  },
  "compileOnSave": false,
  "exclude": [ "src", "wwwroot" ],
  "include": [ "file.ts" ]
}

2
这也可以用于 jsconfig.js。我也没有使用 TS,但是 Vue 和 Vetur 开始因某些原因要求使用它。这是他们架构上的一个非常糟糕的决定。 - Vladimir Jovanović

18

如果您正在使用vs code进行编辑,请尝试重新启动编辑器。这种情况解决了我的问题。我认为这是编辑器缓存的问题。


18
在现代的TypeScript配置中,只需要设置"allowJs",无需在包含目录(如"src")中添加任何空的.ts文件(在include数组中指定)。
tsconfig.json
{
  "compilerOptions": {
    "allowJs": true,
   ...
  },
  "include": [
    "src"
  ]
}

2
这个方法很有效,如果有人在按照上述步骤后仍然出现错误,只需重新启动你的IDE即可解决问题。 - Prajwal Kulkarni
这个解决方案对我们没有任何效果。 - spadelives

15

我的所有.ts文件都在与我的tsconfig.json同级的src文件夹中。当我的include设置如下时,我遇到了这个错误(之前是可以工作的,某些依赖项升级导致错误出现):

"include": [
    "src/**/*"
],

将它更改为这个固定值解决了我的问题:

"include": [
    "**/*"
],

11

当您通过tsc --init创建tsconfig.json文件时,它会注释输入和输出文件目录。因此,这是错误的根本原因。

为了解决这个问题,请取消注释这两行:

"outDir": "./", 
"rootDir": "./", 

在取消注释后,初始情况看起来如上所示。

但是,我所有的.ts脚本都在src文件夹中。因此,我已经指定了/src。

"outDir": "./scripts", 
"rootDir": "./src", 
请注意,在rootDir中指定你的.ts脚本的位置。

10

我遇到了这个错误:

在 'tsconfig.json' 配置文件中未找到任何输入。

include 路径被指定为 '["**/*"]'exclude 路径被指定为 '["**/*.spec.ts","app_/**/*.ts","**/*.d.ts","node_modules"]'

我有一个 .tsconfig 文件,它从 ./src 文件夹中读取 TS 文件。

问题在于源文件夹没有包含任何 .ts 文件,而我正在运行 tslint。我通过从 gulp 文件中移除 tslint 任务来解决此问题,因为我没有任何需要编译和检查语法的 .ts 文件。


9

index.js 改为 index.ts 对我来说解决了这个错误。(在此之前我没有任何 .ts 文件)。

注意:请记得在任何引用 index.js 的地方都改为 index.ts,当然,除了你引用主文件的地方。按照惯例,这可能在你的 libdist 文件夹中。

我的 tsconfig.json

{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "outDir": "./dist",
    "strict": true,
    "esModuleInterop": true,
    "inlineSourceMap": true,
    "noImplicitAny": false
  }
}

我的 outDir./dist,所以我在 package.json 中将我的主要文件引用为 "main": "dist/index.js"

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接