Cảnh báo trang trí thử nghiệm trong trình biên dịch TypeScript


246

Tôi nhận được cảnh báo ...

Hỗ trợ thử nghiệm cho các nhà trang trí là một tính năng có thể thay đổi trong phiên bản tương lai. Đặt tùy chọn 'ExperDecorators' để xóa cảnh báo này.

... mặc dù trình biên dịch của tôi trong tsconfig.json có các cài đặt sau:

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

Điều kỳ lạ là một số lớp ngẫu nhiên sử dụng trang trí không hiển thị cảnh báo đó nhưng phần còn lại trong cùng một dự án thì có.

Điều gì có thể gây ra hành vi như vậy trong trình biên dịch TypeScript?


19
Bạn đã thử khởi động lại VS Code chưa? Đôi khi tôi thấy điều đó là cần thiết sau khi thực hiện thay đổi tsconfig.json.
David Sherret

2
Bạn có thể thử thổi trả lời anh chàng. Nó làm việc cho tôi! stackoverflow.com/a/38970591/2468781
eildiz

10
Tình cờ nếu có ai đó gặp phải vấn đề này đang sử dụng VS Professional, không phải VS Code, bạn có thể đã thêm một .tstệp vào một dự án góc cạnh bằng tay; nếu vậy, trình biên dịch TS mặc định là xung đột với Angular CLI. Nhấp chuột phải vào tệp -> Thuộc tính -> Xây dựng hành động: Không có. Sau đó khởi động lại VS nếu cần.
pbarranis

2
Khởi động lại mã VS đã giúp tôi giải quyết vấn đề.
CMA

4
Tôi tình cờ bắt đầu VSCode ( code .) trong thư mục sai. Mọi thứ dường như ổn - tôi đã thấy và có thể chỉnh sửa tất cả các tệp của mình - vì vậy ban đầu tôi không nhận thấy bất cứ điều gì là "sai". Nhưng tôi đã nhận được cảnh báo "Nhà trang trí thử nghiệm" ngu ngốc đó trên một - và chỉ một! - Thành phần góc. Tôi đã thoát VSCode, khởi động lại ( code .một lần nữa) trong thư mục CORRECT (gốc dự án Angular của tôi) .. và cảnh báo biến mất.
paulsm4

Câu trả lời:


218

Mặc dù VS Code là một trình soạn thảo tuyệt vời cho các dự án TypeScript, nhưng nó cần một cú hích mọi lúc mọi nơi. Thông thường, không có cảnh báo, một số tệp nhất định khiến nó hoảng loạn và phàn nàn. Chủ yếu là sửa lỗi dường như là lưu và đóng tất cả các tệp đang mở, sau đó mở tsconfig.json. Sau đó, bạn sẽ có thể mở lại tệp vi phạm mà không gặp lỗi. Nếu nó không hoạt động, hãy rửa, rửa và lặp lại.

Nếu bạn tsconfig.jsonchỉ định các tệp nguồn của nó bằng cách sử dụng filesmảng, IntelliSense sẽ chỉ hoạt động chính xác nếu tệp được đề cập được tham chiếu sao cho Mã VS có thể tìm thấy nó bằng cách duyệt qua cây tệp đầu vào.

Chỉnh sửa: Lệnh 'tải lại cửa sổ' (được thêm từ lâu rồi bây giờ) sẽ giải quyết vấn đề này một lần và mãi mãi.


5
Cảm ơn bạn - xóa "tệp" khỏi tsconfig.json giải quyết vấn đề
bensiu 11/07/2016

4
Câu trả lời không thực sự phù hợp với trường hợp của tôi nhưng bằng cách nào đó đã giúp tôi tìm ra vấn đề của mình. Tôi đang sử dụng VS 2015 và giữa việc thay đổi tệp xprojtsconfigtệp, tôi đã bỏ lỡ thực tế là thư mục chứa các tệp script của tôi được liệt kê trong excludephần tsconfig. Hy vọng điều này sẽ giúp được ai đó.
Stefan Balan

18
Tệp> Đóng thư mục> Mở thư mục làm việc cho tôi. Điều này xảy ra sau khi tôi khởi động lại máy mà không đóng vscode đúng cách.
Adrian Moisa

3
Nếu tôi không sử dụng bản thảo thì sao? Chỉ có javascript es6?
DDD

3
Tôi không chắc chắn khi nó được thêm vào nhưng bảng lệnh hiện có "Cửa sổ tải lại", lý tưởng cho loại điều này.
Bộ giải mã

183

Tôi phải thêm phần sau vào tệp settings.json của vscode để xóa cảnh báo.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Tùy chọn -> Cài đặt

nhập mô tả hình ảnh ở đây


Cảm ơn rất nhiều. Tôi đang sử dụng trang trí es6 + và chưa cài đặt bản thảo. Tuyệt vời.
Akhmedzianov Danilian

3
Câu trả lời này là tốt nhất, vì không cần phải tạo một tệp riêng biệt trong dự án để giải quyết vấn đề VSCode.
Rodrigo

ctrl + ,Phím tắt để mở cài đặt người dùng. trên cài đặt người dùng nhấp vào 3 dấu chấm ( ...) sau đó bật lên nhấp Open settings.jsonđể mởsettings.json
suhailvs

Cảm ơn rất nhiều. Rất hữu ích.
an0nh4x0r

102

Lỗi này cũng xảy ra khi bạn chọn thư mục "src" cho thư mục không gian làm việc của bạn.

Khi thư mục gốc, thư mục chứa "src", "node_modules" được chọn, lỗi sẽ biến mất


9
Đến đây để đăng bài này. CÁi này đã sửa nó giúp tôi. Tôi đã sử dụng Angular 2 thông qua Angular CLI.
async

Trong trường hợp không thể hiểu được ở trên: Vscode phải tải thư mục chứa tệp cấu hình để biết về nó. Nếu bạn muốn tải một nếp gấp xuống, tôi đoán bạn có thể viết một tệp cấu hình mới sẽ hợp lệ từ thư mục đó và bên dưới.
LosManos

Điều đó là vậy đó. Cảm ơn bạn :)
Kamil

43

Tệp -> Tùy chọn -> Cài đặt


Đối với tôi, vấn đề xuất hiện trên phiên bản 1.37 và giải pháp của bạn đã giải quyết nó.
Stephane

32

bên trong dự án của bạn tạo tệp tsconfig.json, sau đó thêm dòng này

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}

25

phải thêm typescript.tsdkvào .vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"

5
Điều này giải quyết vấn đề này đối với tôi, nhưng dòng đó đi vào .vscode/settings.jsontheo này
Fran Rodriguez

1
Cũng đã giải quyết nó cho tôi, nhưng tôi không có .vscodethư mục (tôi không biết tại sao - Tôi là nhà phát triển phụ trợ, hãy để tôi yên!), Vì vậy tôi đã tạo một thư mục trong thư mục gốc với settings.jsontệp đã nói .
Aage

15

Trong VSCode, đi tới Tệp => Tùy chọn => Cài đặt (hoặc Điều khiển + dấu phẩy) và nó sẽ mở tệp Cài đặt người dùng. Tìm kiếm "javascript.implicitProjectConfig.experimentalDecorators": true và sau đó kiểm tra hộp kiểm cho ExperDecorators vào tệp và nó sẽ sửa nó. Nó đã làm cho tôi.

nhập mô tả hình ảnh ở đây


12

Trong Visual Code Studio Chuyển đến Tệp >> Tùy chọn >> Cài đặt, Tìm kiếm "trang trí" trong trường tìm kiếm và Kiểm tra tùy chọn như trong ảnh. nhập mô tả hình ảnh ở đây


11

Mở settings.jsontệp ở vị trí sau<project_folder>/.vscode/settings.json

hoặc bạn có thể mở tệp từ menu như được đề cập dưới đây

VSCode -> File -> Preferences -> Workspace Settings

cài đặt thử nghiệm

Sau đó thêm các dòng sau vào settings.jsontập tin

{
    "typescript.tsdk": "node_modules/typescript/lib",
    "enable_typescript_language_service": false
}

Đó là tất cả. Bạn sẽ không thấy cảnh báo / lỗi nào liên quan đến ' ExperDecorators '


11
Tôi đã nhận được "Cài đặt cấu hình không xác định" sau khi thêm "enable_typescript_lingu_service" bằng cách sử dụng vscode 1.8.1
David Cheung

5
Đây là lời khuyên HORRIBLE nếu dự án của bạn sử dụng Bản in!
paulsm4

1
Việc vô hiệu hóa "enable_typescript_lingu_service" sẽ tắt hiệu quả mọi ưu đãi TypeScript trực tiếp, vui lòng tránh đề xuất này.
Jessy

10

Câu trả lời này dành cho những người đang sử dụng một javascript dự án và không phải là một nguyên cảo một. Thay vì tệp tsconfig.json, bạn có thể sử dụng tệp jsconfig.json .

Trong trường hợp cụ thể có cảnh báo trang trí, bạn sẽ viết bên trong tệp:

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}

Yêu cầu các hành vi lỗi được yêu cầu, tốt hơn là chỉ định "bao gồm" trong tệp cấu hình và khởi động lại trình chỉnh sửa. Ví dụ

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}


9

Thêm các dòng sau trong tsconfig.json và khởi động lại Mã VS.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}

Việc khởi động lại là chìa khóa cho tôi. Cảm ơn.
rynop

9

Không tin vào quan điểm nhưng hãy chắc chắn để thêm những điều sau đây vào

  • Cài đặt không gian làm việc không phải Cài đặt người dùng

trong Tệp >> Tùy chọn >> Cài đặt

"javascript.implicitProjectConfig.experimentalDecorators": đúng

điều này đã khắc phục vấn đề cho tôi và tôi đã thử khá nhiều gợi ý tôi tìm thấy ở đây và những nơi khác.



4

Vì lợi ích của sự rõ ràng và ngu ngốc.

1) Mở .vscode / settings.json.

2) Thêm "typecript.tsdk": "node_modules / typecript / lib" trên đó.

3) Lưu nó.

4) Khởi động lại mã Visual Studio.


4

Nếu bạn đang làm việc trong Visual studio. Bạn có thể thử sửa lỗi này

  1. Dỡ dự án của bạn từ studio hình ảnh
  2. Chuyển đến thư mục nhà dự án của bạn và mở tệp "csproj".
  3. Thêm TypeScriptExperimentalDecorators vào phần này như trong hình

    nhập mô tả hình ảnh ở đây

    1. Tải lại dự án trong Visual studio.

xem thêm chi tiết tại địa điểm này


4

Nếu bạn đang sử dụng cli để biên dịch các tệp * .ts, bạn có thể đặt ExperDecorators bằng lệnh sau:

 tsc filename.ts --experimentalDecorators "true"

Cảm ơn, điều này đã cứu sự thất vọng của tôi. Tôi đã có các cài đặt tương tự như người hỏi, tuy nhiên tôi đang sử dụng Sublime Text 3 và giải pháp của bạn đã được chứng minh là hữu ích!
Irfandy Jip

4

Vui lòng kiểm tra xem bạn đã mở trong Mã VS của bạn thư mục của toàn bộ dự án và không chỉ thư mục src, bởi vì nếu bạn chỉ mở src, thì tệp ts.config.json (nằm trong thư mục dự án) sẽ không nằm trong phạm vi và VS sẽ không nhận ra các tham số trang trí thử nghiệm.

Trong trường hợp của tôi, điều này đã khắc phục tất cả các vấn đề liên quan đến vấn đề này.


Đây cũng là vấn đề của tôi. Bạn có thể thấy node_modules không? Bạn có thể thấy tsconfig.json không? Nếu không, hãy mở một cửa sổ vsCode mới, đóng cửa sổ cũ, chọn tệp -> mở thư mục và đảm bảo bạn chọn thư mục mẹ của srcnode_modules, thay vì chỉ chọn src.
Kyle Vassella


2

Mở toàn bộ thư mục của dự án thay vì tên dự án / src

tsconfig.json đã ra khỏi thư mục src


1

Tôi đã sửa cảnh báo bằng cách xóa "baseUrl": "", khỏi tệp tsconfig.json


1

Bạn có thể gặp phải vấn đề này nếu bạn mở tệp TS tồn tại bên ngoài dự án. Chẳng hạn, tôi đang sử dụng lerna và có một tệp được mở từ gói khác. Mặc dù gói khác có tsconfig riêng với các trang trí thử nghiệm, VsCode không tôn trọng nó.


1

Tôi đã gặp phải vấn đề tương tự khi tạo Dịch vụ tiêm trong Angular 2. Tôi có tất cả mọi thứ tại tsconfig.json. Cho đến khi tôi gặp lỗi này ở dòng ColorsImmutable.

@Injectable()
export class ColorsImmutable {

Và sửa lỗi là đăng ký Dịch vụ ở cấp mô-đun hoặc Cấp thành phần bằng cách sử dụng mảng nhà cung cấp.

providers:[ColorsImmutable ],

1

Nếu bạn sử dụng thời gian chạy Deno JavaScript và TypeScript và bạn bật thử nghiệmDecorators: true trong tsconfig.json hoặc cài đặt ide VSCode. Nó sẽ không làm việc. Theo yêu cầu của Deno, bạn cần cung cấp tsconfig dưới dạng cờ khi chạy tệp Deno. Xem Tùy chọn trình biên dịch TypeScript tùy chỉnh

Trong trường hợp cụ thể của tôi, tôi đã chạy thử nghiệm Deno và được sử dụng.

$ deno test -c tsconfig.json

Nếu nó là một tập tin, bạn có một cái gì đó như

 $ deno run -c tsconfig.json mod.ts

tsconfig.json của tôi

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}

Tôi đã làm điều này và chưa gặp may mắn, vì chúng nêu trong các tính năng thử nghiệm của tài liệu sẽ không hoạt động,
Ezzabuzaid

Nó sẽ làm việc. Xem câu trả lời cập nhật chính xác nội dung của tsconfig.json của tôi. Sau đó xem liên kết này github.com/manyuanrong/dso/issues/18
tksilicon

0

Tôi đã thêm tùy chọn này vào tsconfig.json, "baseUrl": "front-end"Thay thế front-end bằng tên của dự án angular-cli của bạn.


0

Bạn cũng có thể thử với ng build. Tôi vừa mới xây dựng lại ứng dụng và bây giờ nó không tuân thủ.


0

Vì vậy, hóa ra bạn có thể khắc phục điều này bằng cách khớp tên mô-đun của bạn với tên tệp. Nếu bạn có tên mô-đun BankecialtyModule thì tên tệp phải là. ngân hàng-đặc sản.module.ts


0

Tôi đã gặp lỗi này khi tôi tạo một mô-đun mới và di chuyển tệp * .module.ts và * -routing.module.ts của mình sang một thư mục khác. Sau khi tôi xóa hai tệp và tạo mô-đun trên thư mục mới, nó hoạt động hoàn hảo. Môi trường Angular Phiên bản 9 và Angular CLI phiên bản 9.1.0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.