如何摆脱警告.ts 文件是 TypeScript 编译的一部分,但它是未使用的

我刚把角度更新到最新的 9.0.0-next.4。我没有使用路由,但是在更新之后我突然看到这个警告。如何删除此警告

src/war/angular/src/app/app-routing.module.ts中的警告是 类型脚本编译,但未使用。只将入口点添加到 Tsconfig 中的“ files”或“ include”属性。

包裹 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"
]
}
}
122427 次浏览

结果是,您需要从“ include”中删除这一行 "src/**/*.ts"来自 tsconfig.app.json,并且只在文件中保留入口点(main.ts 和 polyfill s.ts)

对我来说,问题在于我使用的是:

loadChildren: () => import('./components/admin/_admin.module').then(m => m.AdminModule)

但是没有导入模块

import { AdminModule } from './components/admin/_admin.module';

它能解决问题。

我看到过这些抱怨环境的信息。*.这些文件实际上是在 Angular.json 中提到的不同的构建后,从角8升级到角9包括 CLI 本地和全球。但是,我没有运行 ng update,它可能会用以下代码更新 tsconfig.json,而是手动更新 tsconfig.json。

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

然后警告就消失了。

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

上面的小块已经不再需要了。否则,它将导致规范测试代码抱怨“没有找到模块”,而模块实际上是存在的,因为 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
}
}

评论:

我的目标是 Google Chrome 和 Safari,所以如果你想瞄准其他浏览器,你可能需要做出相应的调整。

我可以通过定义 tsconfig.app.json中的 files属性使它工作。

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

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

上面的答案可能与一些人有关,但是我刚刚在这篇文章中描述的是我的警告的根源。注意,我的 tsconfig.json 或 tsconfig.app.json 中没有包含或文件数组,当我实际引用项目中其他地方的文件时,警告消失了。

今天更新到角度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"
]
}

我尝试了很多方法来解决这个问题,最后我还是解决了。

我的问题是更新一个应用程序,发现在角度8.1到角度9.x,但应用程序也使用爱奥尼亚

你应该只有 aot: trueangular.json

在 src/polyfill s.ts 中导入’./zone-Flag. ts’; 删除. ts

Https://medium.com/@grantbrits/upgrade-ionic-4-to-ionic-5-angular-76514079fb2a 请在此输入图片描述

只需添加区域标志. ts 并删除任何包含。

 "files": [
"src/main.ts",
"src/polyfills.ts",
"src/zone-flags.ts"
]

你是否使用了“角度建造者”/“定制网络包”?

我被这些信息轰炸在角度10之前从来没有见过他们。改变 includes没有什么区别。

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

这实际上是相同的错误提出了这个问题,但对于 ngtypecheck.ts文件(无论他们是 没错我不确定!)

在/home/circleci/ng/aio/src/main.ngtypeechk.ts 中的警告是 类型脚本编译,但未使用。只将入口点添加到 Tsconfig 中的“ files”或“ include”属性。

在我看来,这实际上与 @angular-builders/custom-webpack有关。

Https://github.com/just-jeb/angular-builders/issues/781 一个问题刚刚打开。感谢 https://stackoverflow.com/a/62573294/16940指出这一点。

升级到 v10.0.1为我修复了这个问题,但是请参阅上述问题的最新版本。

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

检查主 tsconfig.app.json文件。

enter image description here

看看里面有没有下面的内容,

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

最有可能的原因是这样的。

只向 tsconfig 中的 filesinclude属性添加入口点。

因此,删除你的 tsconfig.app.json上的这些行,这就是错误所在:)

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

我希望这能帮到别人。

谢谢。

02-08-2020

爱奥尼尔5 + 角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"
]
}

升级到角度10后,我得到了同样的警告。对于某些开发人员依赖项,运行 npm i报告的版本不匹配。升级这些(npm i <package>@latest)并将 nodejs 更新到版本12(版本10)之后,警告就消失了。

在我的例子中,这些是必须更新的软件包:

  • @angular-devkit/build-angular
  • codelyzer

我面临同样的问题后,更新角度9应用程序角度10。更新角度 Devkit 解决了这个问题。

在我的例子中,警告所报告的类确实被使用了。然而,问题在于,在导入它们时,它们拥有扩展。”。Js”。

因此,这一行导致了错误“ WARWN in src app user.service.ts 是 TypeScript 编译的一部分,但是没有使用”:

import { UserService } from './user.service.js';

我可以通过删除“ . js”扩展名来修复它:

import { UserService } from './user.service';

在尝试了以前的解决方案建议之后,它对我起作用了

更新你的包 json

"@angular-devkit/build-angular": "~0.1000.3"

你能在这里看到所有的版本吗。

Https://www.npmjs.com/package/@angular-devkit/build-angular?activetab=versions

从角度/核心检查哪个版本与您当前版本一起工作

角度10与版本 0.1000.3@ angle-devkit/build-angle工作

我开始看到在 Angular 10的警告,这是一个有点令人惊讶的事实,它是一个新的应用程序创建使用的 CLI 开箱即用,我得到的消息时,做一个推动构建的 test.tsenviornments.prod.ts。我认为这些文件会被默认排除,但它们不是,这很奇怪。

这些文件是 TypeScript 转换所需的 没有文件; 它们不需要绑定到浏览器的 .js版本的文件。test.tsenvironments.prod.ts文件是一种手段,以结束建设时间要求在角度。因此,它们可以添加到 tsconfig.app.json中的 exclude部分或者应用程序中的 TypeScript 配置文件,如下所示:

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

如上所述,一旦添加了这些内容,警告将不再显示。

Json

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

这个代码片段解决了这个问题。

我的团队几个月来一直在和同样的症状作斗争,我终于发现我们的 tsconfig.worker.json太包容了。在我们的例子中,显示了数百条“ TypeScript 编译的一部分但未使用”的消息——似乎应用程序中的每个 ts 文件都被列出了,有些被列出了好几次。

原来的样子:

"include": [
"src/**/*.worker.ts"
]

是什么阻止了这种有缺陷的行为:

"files": [ ]   # no include or exclude block

好好想想发生的事情是,我们的标准 tsconfig.app.json 的 files对象已经足够了。通过这些入口点(main.TS & polyfils.TS) ,TS 编译器能够找到对所有 * 的引用。文件并传输它们。不知何故,tsconfig.webworker.ts 配置告诉编译器根本不要查看 * 。Webworker.ts 文件。我不太确定为什么会有这么多警告; 也许我们的 webworker 文件(我们有大约20个)不必要地导入了一大堆他们不用的东西。

不管怎样,通过这个调整,我摆脱了无数的警告,并且我们的编译时间减少了一半!

在我的例子中,排除未使用的文件更容易:

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

在我的场景中,我的 tsconfig.json 缺少包含 spec 文件的排除符。这是我的 tsconfig 文件的代码片段,它修复了这个问题。

"exclude": [
"**/*.spec.ts",
"./node_modules/*"
],
"files": [
"src/main.ts",
"src/polyfills.ts"
]

尝试删除包含角 CLI 缓存文件的文件夹 node_modules/.cli-ngcc

基本上,问题是在运行时编译器检查这些文件是否被导入或在某处使用,如果没有,它将抛出警告..。 因此,如果这些警告连接到環境.ts 文件,您可以排除 tsconfig.app.json 中的環境文件,如上面的注释所示,但是如果有关于某些组件的警告没有导入到任何地方,您必须检查这些组件并查看它们为什么没有被使用,如果您不需要它们,只需删除它们。

派对迟到了。

我得到了这个错误

src/environments/environment.prod.ts is part of the TypeScript compilation but it's unused.
Add only entry points to the 'files' or 'include' properties in your tsconfig

为了解决这个问题,我需要将这两行代码添加到 tsconfig.app.json 中

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