angular - Làm thế nào để loại bỏ cảnh báo .ts file là một phần của biên dịch TypeScript nhưng không được sử dụng
Tôi vừa cập nhật Angular lên phiên bản mới nhất 9.0.0-next.4. Tôi không sử dụng routing nhưng đột nhiên sau khi cập nhật, tôi liên tục thấy cảnh báo này. Làm thế nào để tôi xóa cảnh báo này
CẢNH BÁO trong
src/war/angular/src/app/app-routing.module.tslà một phần của quá trình biên dịch TypeScript nhưng không được sử dụng. Chỉ thêm các điểm vào vào các thuộc tính 'files' hoặc 'include' trong tsconfig của bạn.
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"
]
}
}
Câu trả lời #1
Hóa ra bạn cần xóa dòng này khỏi "include" "src/**/*.ts" trong tsconfig.app.json và chỉ giữ các điểm nhập trong các tệp (main.ts và polyfills.ts)
Câu trả lời #2
Tôi có thể làm cho nó hoạt động bằng cách định nghĩa thuộc tính files trong tsconfig.app.json. Những tệp này sẽ được tính theo đường dẫn tương đối so với tệp tsconfig.app.json.
"files": [
"main.ts",
"polyfills.ts"
]
Câu trả lời #3
Tôi đã thấy những tin nhắn này than phiền về các tệp environment.*.ts mà thực ra được đề cập trong angular.json cho các bản dựng khác nhau, sau khi nâng cấp từ Angular 8 lên Angular 9 bao gồm cả CLI cục bộ và toàn cục. Tuy nhiên, tôi đã không chạy ng update mà có thể sẽ cập nhật tsconfig.json với các nội dung sau, thay vào đó tôi đã cập nhật tsconfig.json một cách thủ công.
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.d.ts"
]
Sau đó các cảnh báo biến mất.
Cập nhật 2020-05-27 với Angular 9.1.x trong Visual Studio Professional 2019
Khối nhỏ ở trên không còn cần thiết nữa. Nếu không thì sẽ gây ra các mã kiểm tra spec báo lỗi "module not found" đối với các module thực ra là có tồn tại vì ng test đang xây dựng và chạy tốt, và việc xây dựng cũng như chạy ứng dụng ng là ổn. Rõ ràng là có một số thay đổi trong NG giữa phiên bản 9 và 9.1.
Đây là tsconfig.json đang hoạt động của tôi bây giờ:
{
"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
}
}
ghi chú:
Tôi chỉ nhắm mục tiêu vào Google Chrome và Safari, vì vậy nếu bạn muốn nhắm mục tiêu các trình duyệt khác, bạn có thể cần điều chỉnh cho phù hợp.
Câu trả lời #4
Bạn có đang sử dụng @angular-builders/custom-webpack không?
Tôi đã bị bủa vây bởi những tin nhắn này trong Angular 10 mà trước đây chưa từng thấy chúng. Thay đổi includes cũng không tạo ra sự khác biệt.
Rồi tôi đã tìm thấy https://github.com/angular/angular/pull/36211.
Về cơ bản đây là cùng một lỗi như được nêu trong câu hỏi này nhưng cho các tệp ngtypecheck.ts (dù chúng là gì chính xác tôi cũng không chắc!)
CẢNH BÁO trong /home/circleci/ng/aio/src/main.ngtypecheck.ts là một phần của biên dịch TypeScript nhưng không được sử dụng. Chỉ thêm các điểm nhập vào các thuộc tính 'files' hoặc 'include' trong tsconfig của bạn.
Có vẻ như đối với tôi thực sự liên quan đến @angular-builders/custom-webpack.
https://github.com/just-jeb/angular-builders/issues/781 nơi một vấn đề vừa mới được mở. Cảm ơn https://stackoverflow.com/a/62573294/16940 đã chỉ ra điều này.
Cập nhật lên phiên bản v10.0.1 đã khắc phục vấn đề cho tôi, nhưng hãy xem vấn đề ở trên cho phiên bản mới nhất.
"@angular-builders/custom-webpack": "10.0.1" // as of today
Câu trả lời số 5
Điều này có thể có vẻ hiển nhiên, NHƯNG bạn sẽ thấy cảnh báo này đối với bất kỳ tệp nào mà bạn thêm vào nhưng chưa được tham chiếu/nhập khẩu vào tệp khác. Điều này sẽ trở nên rõ ràng khi bạn cố gắng chỉnh sửa một trong các tệp bị cảnh báo, và Ivy sẽ không tự động biên dịch lại sau khi chỉnh sửa tệp. Khi bạn nhập mô-đun vào một tệp phụ thuộc và bắt đầu sử dụng nó, các cảnh báo sẽ biến mất.
Những câu trả lời ở trên có thể liên quan đến một số người, nhưng những gì tôi vừa mô tả trong bài đăng này là nguyên nhân gốc rễ của các cảnh báo của tôi. Lưu ý, tôi không có một mảng include hay files trong tsconfig.json hoặc tsconfig.app.json của mình và các cảnh báo biến mất ngay khi tôi thực sự tham chiếu đến các tệp ở nơi khác trong dự án của mình.
Câu trả lời số 6
Cập nhật lên Angular 9 hôm nay và nhận được cảnh báo. Giải pháp của tôi là thêm mảng "files" này mà không có "src" trong đường dẫn. Vừa thêm:
"files": [
"main.ts",
"polyfills.ts"
],
Toàn bộ tệp tsconfig.app.json của tôi là:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "es2015",
"types": ["node"]
},
"files": [
"main.ts",
"polyfills.ts"
],
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}
