Peringatan dekorator eksperimental dalam kompilasi TypeScript

251

Saya menerima peringatan ...

Dukungan eksperimental untuk dekorator adalah fitur yang dapat berubah dalam rilis mendatang. Setel opsi 'experimentalDecorators' `untuk menghapus peringatan ini.

... walaupun compilerOptions di tsconfig.json saya memiliki pengaturan berikut:

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

Apa yang aneh adalah bahwa beberapa kelas acak yang menggunakan dekorator tidak menunjukkan peringatan itu, tetapi sisanya dalam proyek yang sama melakukannya.

Apa yang dapat menyebabkan perilaku seperti itu di kompiler TypeScript?

bensiu
sumber
19
Sudahkah Anda mencoba memulai ulang VS Code? Saya menemukan itu perlu setelah membuat perubahan tsconfig.json kadang-kadang.
David Sherret
2
Anda dapat mencoba meniup jawaban Bung. Ini bekerja untuk saya! stackoverflow.com/a/38970591/2468781
eildiz
10
Secara kebetulan jika orang lain mengalami ini yang menggunakan VS Professional, bukan VS Code, Anda mungkin telah menambahkan .tsfile ke proyek sudut secara manual; jika demikian, kompilasi TS default bertentangan dengan Angular CLI. Klik kanan file -> Properti -> Bangun Tindakan: Tidak Ada. Kemudian restart VS jika perlu.
pbarranis
2
Restart VS Code membantu saya memecahkan masalah ini.
CMA
4
Saya kebetulan memulai VSCode ( code .) di direktori yang salah. Semuanya tampak OK - saya melihat dan dapat mengedit semua file saya - jadi pada awalnya saya tidak melihat ada yang "salah". Tapi saya mendapat peringatan "Dekorator Eksperimental" bodoh itu pada satu - dan hanya satu! - Komponen sudut. Saya keluar dari VSCode, restart ( code .lagi) di direktori CORRECT (root proyek Angular saya) .. dan peringatan itu hilang.
paulsm4

Jawaban:

220

Meskipun VS Code adalah editor yang hebat untuk proyek-proyek TypeScript, itu membutuhkan tendangan setiap sekarang dan lagi. Seringkali, tanpa peringatan, file-file tertentu membuatnya panik dan mengeluh. Sebagian besar perbaikannya tampaknya untuk menyimpan dan menutup semua file yang terbuka, lalu buka tsconfig.json. Setelah itu Anda harus dapat membuka kembali file yang menyinggung tanpa kesalahan. Jika tidak berhasil, busa, bilas, dan ulangi.

Jika Anda tsconfig.jsonmenentukan file sumbernya menggunakan filesarray, IntelliSense hanya akan berfungsi dengan benar jika file yang dimaksud direferensikan sehingga VS Code dapat menemukannya dengan melintasi susunan file input.

Sunting: Perintah 'reload window' (ditambahkan berabad-abad lalu sekarang) harus menyelesaikan masalah ini sekali dan untuk semua.

linguamachina
sumber
5
Terima kasih - menghapus "file" dari tsconfig.json menyelesaikan masalah
bensiu
4
Jawabannya tidak benar-benar relevan dengan kasus saya tetapi entah bagaimana membantu saya memecahkan masalah saya. Saya menggunakan VS 2015 dan antara mengubah file xprojdan tsconfig, saya melewatkan fakta bahwa folder dengan file skrip saya terdaftar di excludebagian tsconfig. Semoga ini bisa membantu seseorang.
Stefan Balan
19
File> Tutup folder> Buka folder berfungsi untuk saya. Ini terjadi setelah saya me-restart mesin tanpa menutup vscode dengan benar.
Adrian Moisa
3
Bagaimana jika saya tidak menggunakan naskah? Hanya javascript es6?
DDD
3
Saya tidak yakin kapan itu ditambahkan tetapi palet perintah sekarang memiliki "Reload Window", yang ideal untuk hal semacam ini.
Coderer
185

Saya harus menambahkan yang berikut ini di file settings.json vscode untuk menghapus peringatan.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Preferences -> Pengaturan

masukkan deskripsi gambar di sini

Manoj Paul
sumber
Terima kasih banyak. Saya menggunakan dekorator es6 + dan belum menginstal naskah. Luar biasa.
Akhmedzianov Danilian
3
Jawaban ini adalah yang terbaik, karena tidak perlu membuat file terpisah di proyek untuk menyelesaikan masalah VSCode.
Rodrigo
ctrl + ,tombol pintas untuk membuka pengaturan pengguna. pada pengaturan pengguna klik 3 titik ( ...) lalu klik sembulan Open settings.jsonuntuk membukasettings.json
suhailvs
Terima kasih banyak. Sangat membantu.
an0nh4x0r
102

Kesalahan ini juga terjadi ketika Anda memilih folder "src" untuk folder ruang kerja Anda.

Ketika folder root, folder di mana "src", "node_modules" berada dipilih, kesalahan menghilang

Semir Deljić
sumber
9
Datang ke sini untuk memposting ini. Ini memperbaikinya untuk saya. Saya menggunakan Angular 2 melalui Angular CLI.
async
Dalam kasus di atas tidak dapat dipahami: Vscode harus memuat folder tempat file config tahu tentang hal itu. Jika Anda ingin memuat lipatan lebih jauh ke bawah, saya kira Anda bisa menulis file konfigurasi baru yang akan valid dari folder itu dan di bawah.
LosManos
Itu dia. Terima kasih :)
Kamil
47

File -> Preferensi -> Pengaturan

Dmitriy Botov
sumber
Bagi saya, masalah muncul pada versi 1.37 dan solusi Anda menyelesaikannya.
Stephane
32

di dalam proyek Anda, buat file tsconfig.json, lalu tambahkan baris ini

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}
Muhammed Moussa
sumber
25

harus menambahkan typescript.tsdkke saya .vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"
beewest
sumber
5
Ini memecahkan masalah bagi saya, tetapi garis yang masuk ke ini .vscode/settings.jsonsebagai per ini
Fran Rodriguez
1
Juga menyelesaikannya untuk saya, tetapi saya tidak memiliki .vscodefolder (saya tidak tahu mengapa - saya seorang backend dev, tinggalkan saya sendiri!), Jadi saya membuat satu di folder root dengan kata settings.jsonfile.
Aage
17

Dalam VSCode, Buka File => Preferensi => Pengaturan (atau Kontrol + koma) dan itu akan membuka file Pengaturan Pengguna. Cari "javascript.implicitProjectConfig.experimentalDecorators": true dan centang kotak centang untuk eksperimentalDecorators ke file dan itu harus memperbaikinya. Itu untuk saya.

masukkan deskripsi gambar di sini

Taqi Raza Khan
sumber
13

Dalam Visual Code Studio Buka File >> Preferensi >> Pengaturan, Cari "dekorator" di bidang pencarian dan Periksa opsi seperti pada gambar. masukkan deskripsi gambar di sini

Muzaffar Mahmood
sumber
11

Buka settings.jsonfile di lokasi berikut<project_folder>/.vscode/settings.json

atau Anda dapat membuka file dari menu seperti yang disebutkan di bawah ini

VSCode -> File -> Preferences -> Workspace Settings

pengaturan eksperimentalDecorators

Kemudian tambahkan baris berikut dalam settings.jsonfile

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

Itu saja. Anda tidak akan melihat peringatan / kesalahan terkait ' eksperimenDecorator '

Vinothkumar Arputharaj
sumber
11
Saya mendapat "Pengaturan konfigurasi tidak dikenal" setelah menambahkan "enable_typescript_language_service" menggunakan vscode 1.8.1
David Cheung
5
Ini adalah saran MENGERIKAN jika proyek Anda menggunakan Scriptese!
paulsm4
1
Menonaktifkan "enable_typescript_language_service" secara efektif akan mematikan semua penawaran TypeScript live linting, harap hindari saran ini.
Jessy
10

Jawaban ini ditujukan untuk orang-orang yang menggunakan proyek Javascript dan bukan yang skrip . Alih-alih file tsconfig.json Anda dapat menggunakan file jsconfig.json .

Dalam kasus tertentu memiliki dekorator yang memperingatkan Anda ingin menulis di dalam file:

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

Jika ditanya perilaku buggy, selalu lebih baik untuk menentukan "include" dalam file konfigurasi, dan restart editor. Misalnya

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}
Pere Pages
sumber
10
"javascript.implicitProjectConfig.experimentalDecorators": true

Akan menyelesaikan masalah ini.

Rajesh Pal
sumber
1
@nadya: settings.json(baik pengguna atau ruang kerja). Anda juga dapat menggunakan pengaturan gui, seperti jawaban ini
Frank Nocke
9

Tambahkan baris berikut di tsconfig.json dan restart VS Code.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}
Geetesh
sumber
Restart adalah kunci untuk saya. Terima kasih.
rynop
9

Bukan untuk memutar balik poin tetapi pastikan untuk menambahkan yang berikut ke

  • Pengaturan ruang kerja bukan Pengaturan Pengguna

di bawah File >> Preferensi >> Pengaturan

"javascript.implicitProjectConfig.experimentalDecorators": true

ini memperbaiki masalah bagi saya, dan saya mencoba beberapa saran yang saya temukan di sini dan di tempat lain.

petey m
sumber
4

Demi kejelasan dan kebodohan.

1) Buka .vscode / settings.json.

2) Tambahkan "typescript.tsdk": "node_modules / typescript / lib" di atasnya.

3) Simpan.

4) Mulai ulang Kode Visual Studio.

LEMUEL ADANE
sumber
4

Jika Anda bekerja di Visual studio. Anda dapat mencoba perbaikan ini

  1. Bongkar proyek Anda dari studio visual
  2. Buka direktori home proyek Anda dan Buka file "csproj".
  3. Tambahkan TypeScriptExperimentalDecorators ke bagian ini seperti yang ditunjukkan pada gambar

    masukkan deskripsi gambar di sini

    1. Muat ulang proyek dalam Visual studio.

lihat lebih detail di lokasi ini .

kumar chandraketu
sumber
4

Jika Anda menggunakan cli untuk mengkompilasi file * .ts, Anda dapat mengatur experimentalDecorators menggunakan perintah berikut:

 tsc filename.ts --experimentalDecorators "true"
Koji D'infinte
sumber
Terima kasih, ini menyelamatkan frustrasi saya. Saya memiliki pengaturan yang sama dengan si penanya, namun saya menggunakan Sublime Text 3 , dan solusi Anda terbukti sangat membantu!
Irfandy Jip
4

Silakan periksa Anda menentang di Kode VS Anda folder dari seluruh proyek dan tidak hanya folder src, karena jika Anda hanya membuka src, maka file ts.config.json (terletak di folder proyek) tidak akan berada dalam ruang lingkup, dan VS tidak akan mengenali parameter dekorator eksperimental.

Dalam kasus saya ini memperbaiki semua masalah yang terkait dengan masalah ini.

dayanrr91
sumber
Ini juga masalah saya. Bisakah Anda melihat node_modules? Bisakah Anda melihat tsconfig.json? Jika tidak, buka jendela vsCode baru, tutup jendela lama, pilih file -> folder terbuka, dan pastikan Anda memilih folder induk srcdan node_modules, daripada memilih hanya src.
Kyle Vassella
3
  1. Buka VScode.
  2. Tekan ctrl + koma
  3. Ikuti arahan dalam tangkapan layar
    1. Cari tentang eksperimenDecorators
    2. Edit itu
Mostafa
sumber
2

Buka folder seluruh proyek alih-alih nama-proyek / src

tsconfig.json keluar dari folder src

Andrew Yavorsky
sumber
1

Saya mengoreksi peringatan dengan menghapus "baseUrl": "", dari file tsconfig.json

D. Greene
sumber
1

Anda mungkin mengalami masalah ini jika Anda membuka file TS yang ada di luar proyek. Misalnya, saya menggunakan lerna dan membuka file dari paket lain. Meskipun paket lain itu memiliki tsconfig sendiri dengan dekorator eksperimental, VsCode tidak menghargainya.

sparebytes
sumber
1

Saya menghadapi masalah yang sama saat membuat Layanan Injeksi di Angular 2. Saya memiliki semua hal di tsconfig.json. Masih saya mendapatkan kesalahan ini di baris ColorsImmutable.

@Injectable()
export class ColorsImmutable {

Dan memperbaikinya adalah mendaftarkan Layanan di Tingkat modul atau Tingkat Komponen menggunakan array penyedia.

providers:[ColorsImmutable ],
Mohammad Javed
sumber
1

Jika Anda menggunakan Deno JavaScript dan runtime TypeScript dan Anda mengaktifkan eksperimentalDecorators: true di tsconfig.json atau pengaturan ide VSCode. Itu tidak akan bekerja. Menurut persyaratan Deno, Anda perlu menyediakan tsconfig sebagai flag saat menjalankan file Deno. Lihat Opsi Penyusun TypeScript Kustom

Dalam kasus khusus saya, saya menjalankan tes Deno dan digunakan.

$ deno test -c tsconfig.json

Jika itu file, Anda memiliki sesuatu seperti

 $ deno run -c tsconfig.json mod.ts

tsconfig.json saya

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}
tksilicon
sumber
Saya sudah melakukan ini dan belum berhasil, karena mereka menyatakan dalam fitur eksperimental docs tidak akan berfungsi,
Ezzabuzaid
Itu akan berhasil. Lihat jawaban terbaru dari konten tsconfig.json saya. Kemudian lihat tautan ini github.com/manyuanrong/dso/issues/18
tksilicon
0

Saya menambahkan opsi ini ke tsconfig.json, "baseUrl": "front-end"Ganti front-end dengan nama proyek clari sudut Anda.

Sean Maxwell
sumber
0

Anda juga dapat mencoba ng build. Saya baru saja membangun kembali aplikasi dan sekarang tidak sesuai.

Leandro siniñu
sumber
0

Jadi ternyata Anda bisa menyiasatinya dengan mencocokkan nama modul Anda dengan nama file. Jika Anda memiliki nama modul BankSpecialtyModule maka nama file seharusnya. bank-speciality.module.ts

Neal Connolly
sumber
0

Saya mengalami kesalahan ini ketika saya membuat modul baru dan memindahkan file * .module.ts dan * -routing.module.ts ke folder lain. Setelah saya menghapus dua file dan membuat modul pada folder baru berfungsi dengan baik. Environment Angular Version 9 dan Angular CLI versi 9.1.0

Yirga
sumber
0

Bagi saya, kesalahan ini "Dukungan eksperimental untuk dekorator adalah fitur yang dapat berubah dalam rilis mendatang. (Dll)" hanya terjadi di VS Code dalam proyek Angular dan hanya ketika membuat Layanan baru.

Solusi di atas: "Dalam Visual Code Studio Buka File >> Preferensi >> Pengaturan, Cari" dekorator "di bidang pencarian dan Memeriksa opsi JavaScript› Implisit Proyek Konfigurasi: Dekorator Eksperimental "menyelesaikan masalah.

Selain itu, menghentikan layanan ng di jendela terminal dan menyalakannya kembali membuat kesalahan hilang setelah kompilasi ulang.

Ken
sumber