如何消除警告:“.ts文件是TypeScript编译的一部分,但未被使用”

152
我刚把Angular更新到最新版本9.0.0-next.4。虽然我没有使用路由,但在更新后,我一直看到这个警告。如何去除这个警告?

警告:src/war/angular/src/app/app-routing.module.ts是TypeScript编译的一部分,但未被使用。只需将入口点添加到您的tsconfig文件的'files'或'include'属性中。

package.json

  "dependencies": {
"@angular/animations": "^9.0.0-next.4",
"@angular/cdk": "^8.1.4",
"@angular/common": "^9.0.0-next.4",
"@angular/compiler": "^9.0.0-next.4",
"@angular/core": "^9.0.0-next.4",
"@angular/forms": "^9.0.0-next.4",
"@angular/material": "^8.1.4",
"@angular/platform-browser": "^9.0.0-next.4",
"@angular/platform-browser-dynamic": "^9.0.0-next.4",
"@angular/router": "^9.0.0-next.4",
"@ng-bootstrap/ng-bootstrap": "^5.1.0",
"bootstrap": "^4.3.1",
"hammerjs": "^2.0.8",
"moment": "^2.24.0",
"ng-image-slider": "^2.0.1",
"panzoom": "^8.1.2",
"rxjs": "~6.5.2",
"tslib": "^1.9.0",
"zone.js": "^0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.803.2",
    "@angular/cli": "^8.3.2",
    "@angular/compiler-cli": "^9.0.0-next.4",
    "@angular/language-service": "^9.0.0-next.4",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "^5.0.0",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "^5.15.0",
    "typescript": "^3.5.3"
  }

tsconfig.json

    {
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "esnext",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }
}

1
在我的情况下,我有一些用作接口的类,但是在代码中没有发现使用这些类的地方。因此,我将它们全部删除了。 - Janatbek Orozaly
24个回答

117
事实证明,您需要从“include”中删除此行 "src/**/*.ts" ,并且只保留文件的入口点(main.ts 和 polyfills.ts)在 tsconfig.app.json 中。

4
tsconfig.app.json 的排除部分添加这些文件似乎可以解决该问题。 - dota2pro
106
即使我在tsconfig.app.json中没有包含 "include" "src/**/*.ts",我仍然收到警告信息。 - Paul Strupeikis
3
我在tsconfig中没有写include,已经写了一些exclude。但是我收到了29条警告信息。如果我加上主要文件和polyfills的include,仍然会有3条警告。无论我怎样组合路径,都无法排除这三个警告。 - jkyoutsey
2
我通过使用 npm i @angular/cli@latest 更新 angular-cli 来解决了这个问题。 - DauleDK
13
为什么我没有收到针对Angular 9的消息,却收到了针对Angular 10的大量消息?你有什么想法吗? - Simon_Weaver
显示剩余5条评论

59

通过在tsconfig.app.json中定义files属性,我可以让它正常工作。这些文件是相对于tsconfig.app.json文件的。

"files": [
    "main.ts",
    "polyfills.ts"
  ]

3
在我的情况下,我在tsconfig.app.json中没有特定的文件数组条目,每当我向项目添加新的.ts文件时,就会收到错误消息。通过显式添加包含上述2个条目的“files”数组,可以消除警告。 - Matthew Pitts

28

我曾经看到这些抱怨环境.*.ts文件的消息,这些文件实际上在不同构建中在angular.json中提到,升级从Angular 8到Angular 9包括CLI的本地和全局。然而,我没有运行ng update,这可能会更新tsconfig.json为以下内容,而是手动更新了tsconfig.json。

    "files": [
        "src/main.ts",
        "src/polyfills.ts"
    ],
    "include": [
        "src/**/*.d.ts"
    ]

然后警告消失了。

2020-05-27更新,使用Visual Studio Professional 2019中的Angular 9.1.x

上面的小块不再需要。否则,它会导致规范测试代码抱怨“找不到模块”,尽管这些模块实际上已经存在,因为ng test正在很好地构建和运行,ng应用程序的构建和运行也没有问题。显然,在9和9.1之间,NG发生了一些变化。

以下是我的工作tsconfig.json:

{
    "compileOnSave": false,
    "compilerOptions": {
        "baseUrl": "./",
        "outDir": "./dist/out-tsc",
        "sourceMap": true,
        "declaration": false,
        "module": "es2020",
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es2015",
        "typeRoots": [
            "node_modules/@types"
        ],
        "lib": [
            "es2018",
            "dom"
        ],
        "skipLibCheck": true
    }
}

备注:

我只针对谷歌Chrome和Safari进行优化,因此如果您想针对其他浏览器进行优化,则可能需要相应地进行调整。


3
我将tsconfig.app.json中的include的值从 [".//*.ts"] 改成了 [".//*.d.ts"], 这样就没有警告了。 - Peter Wretmo
对我来说不是。我删除了.ts条目(只保留.d.ts)。现在警告更少了。但并没有完全消除。我检查了任何tsconfig - Domske

22

您正在使用 @angular-builders/custom-webpack 吗?

在 Angular 10 中,我一直收到这些消息,以前从未见过。改变 includes 没有任何影响。

然后我找到了 https://github.com/angular/angular/pull/36211

这本质上是与此问题中提出的错误相同,但针对的是 ngtypecheck.ts 文件(确切地说,我不确定它们是什么!)

警告:/home/circleci/ng/aio/src/main.ngtypecheck.ts 是 TypeScript 编译的一部分,但它未使用。只将入口点添加到 tsconfig 的 'files' 或 'include' 属性中。

看起来对我而言实际上与 @angular-builders/custom-webpack 有关。

https://github.com/just-jeb/angular-builders/issues/781 是一个问题才刚刚被提出的地方。感谢 https://dev59.com/2bvoa4cB1Zd3GeqP8Kvk#62573294 提供的指导。

更新到 v10.0.1 对我有用,但请参阅上述问题以了解最新信息。

"@angular-builders/custom-webpack": "10.0.1"    // as of today

同样的问题,我也在使用"@angular-builders/custom-webpack": "^9.2.0",尝试了各种解决方法,但似乎没有什么能够阻止WARNING的出现。 - ramon22
3
@ramon22,切换到10.0.0-beta0对我有用。任何剩余的错误都与CommonJS软件包有关。 - Simon_Weaver
1
如果你收到了 Cannot find module webpack 的错误提示,你可能需要安装或链接webpack。 - Sielu
(关于Sielu的评论)我的技巧是安装webpack(因此在“devDependencies”中明确指定),并将相同的条目添加到“resolutions”中,以避免潜在地安装多个版本的webpack(@angular-devkit#build-angular在其对等依赖项中具有webpack),因为这也可能会导致各种问题。要检查是否安装了多个版本的webpack,请键入“yarn why webpack”(如果您正在使用npm,请自己停止;))。 - Morgan Touverey Quilling
1
目前,您可以执行 "@angular-builders/custom-webpack": "^10.0.1" - trungk18
如果你遇到了“Cannot find module webpack”的问题,请删除package-lock.json文件,然后再次运行“npm i”。这应该可以解决问题。我正在将我的宠物项目升级到Angular 10 https://github.com/trungk18/jira-clone-angular - trungk18

20

今天升级到了Angular 9,但是出现了警告。我的解决方案是在文件路径中添加这个"files"数组,但是没有包含"src"。只需添加如下内容:

更新为 Angular 9 后出现警告。 我的解决方法是在路径中添加 "files" 数组,但不包含 "src"。只需添加:

 "files": [
    "main.ts",
    "polyfills.ts"
  ],

我的完整的tsconfig.app.json文件如下:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "module": "es2015",
    "types": ["node"]
  },
  "files": [
    "main.ts",
    "polyfills.ts"
  ],
  "exclude": [
    "src/test.ts",
    "**/*.spec.ts"
  ]
}

3
在使用 Angular 10 的过程中,出现了“找不到文件.../main.ts”的错误。 - devosu
1
我的 main.ts 文件路径是:"src\main.ts",请检查你的是否相同。无论如何:我还在使用 Angular 9。 - fabio984

20

这可能显而易见,但您将在添加任何文件但尚未被引用或导入到另一个文件中时看到此警告。当您尝试编辑受警告影响的文件之一时,这将变得明显,并且Ivy在编辑文件后不会自动重新编译。一旦您将模块导入到依赖文件中并开始使用它,警告就会消失。

上面的答案可能与某些人有关,但我在此帖子中所描述的是我的警告根本原因。请注意,我在tsconfig.json或tsconfig.app.json中没有include或files数组,只要我在项目的其他地方实际引用这些文件,警告就会消失。


10
这实际上回答了问题,应该将其标记为答案-正如发布者所说,“我没有使用路由”,并且在抱怨路由文件未使用...因此要么使用它,要么删除它,警告就会消失。 - 72GM
1
我先尝试了所有其他答案,但最终这个答案对我起作用了,而且它是最简单的。实际上,我有几个模块,只需要将其添加到其中一个模块中,错误就会消失。 - Siobhan Holubicka

9

2020年2月8日

使用Ionic 5+ Angular 9+开发移动应用。

注意:请参阅include部分。

tsconfig.app.json

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": []
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ],
  "exclude": [
    "src/**/*.spec.ts"
  ]
}

1
你能添加更多的解释吗?我已经复制了这个,但仍然出现错误。 - Evan
@Evan 这是针对 Angular 9 的。你的版本是什么? - Sampath

5

tsconfig.app.json

 "exclude": [
    "src/**/*.spec.ts",
    "src/test.ts",
    "src/environments/environment.prod.ts"
  ]

这段代码解决了问题。


5
只需添加zone-flags.ts并删除任何包含文件即可。
 "files": [
    "src/main.ts",
    "src/polyfills.ts",
    "src/zone-flags.ts"
  ]

1
在 Angular 10.0.1 中对我有效。 - JWP

4

我发现在 Angular 10 中出现了警告,这有点令人惊讶,因为它是一个使用 CLI 开箱即用创建的新应用程序。在对 test.tsenvironments.prod.ts 进行生产构建时,我收到了这些消息。我认为这些文件默认情况下应该被排除在外,但实际上却不是,这很奇怪。

事实上,这些文件不需要进行 TypeScript 转换;它们不需要将 .js 版本的文件捆绑并发送到浏览器。 test.tsenvironments.prod.ts 文件只是 Angular 构建过程中的一种手段。因此,可以将它们添加到应用程序中的 tsconfig.app.json 或适用的 TypeScript 配置文件的 exclude 部分中,如下所示:

  "exclude": [
    "src/**/*.spec.ts",
    "src/test.ts",
    "src/environments/environment.prod.ts"
  ]

一旦按照上述方法添加,警告将不再显示。


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