TypeScript derlemesinde uyarı veren deneysel dekoratörler


249

Uyarıyı alıyorum ...

Dekoratörler için deneysel destek, gelecekteki bir sürümde değişime tabi olan bir özelliktir. Bu uyarıyı kaldırmak için 'experimentalDecorators' seçeneğini `ayarlayın.

... tsconfig.json dosyasındaki compilerOptions'ım aşağıdaki ayarlara sahip olsa da:

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

Garip olan, dekoratörler kullanan bazı rastgele sınıfların bu uyarıyı göstermemesi, ancak aynı projedeki geri kalanların göstermesidir.

TypeScript derleyicisinde bu tür davranışlara ne sebep olabilir?


19
VS Kodunu yeniden başlatmayı denediniz mi? Ben bazen tsconfig.json değişiklikler yaptıktan sonra gerekli buldum.
David Sherret

2
Sen darbe cevap dostum deneyebilirsiniz. Benim için çalışıyor! stackoverflow.com/a/38970591/2468781
eildiz

10
Tesadüfen VS Kodunu değil, VS Professional'ı kullanan başka biriyle karşılaşırsanız, .tsaçısal bir projeye manuel olarak bir dosya eklemiş olabilirsiniz ; öyleyse, varsayılan TS derlemesi Açısal CLI ile çakışıyor. Dosyaya sağ tıklayın -> Özellikler -> Eylem Oluştur: Yok. Sonra gerekirse VS'yi yeniden başlatın.
pbarranis

2
VS Kodu yeniden başlatma sorunu çözmeme yardımcı oldu.
CMA

4
VSCode ( code .) yanlış dizinde başlatmak oldu . Her şey yolunda görünüyordu - gördüm ve tüm dosyalarımı düzenleyebilirdim - ilk başta hiçbir şeyin "yanlış" olduğunu fark etmedim. Ama bu aptal "Deneysel dekoratörler" uyarısını bir tanesine aldım - ve sadece bir tanesine! - Açısal bileşen. VSCode'dan çıktım, ( code .tekrar) CORRECT dizininde (Açısal proje köküm ) yeniden başlatıldım ve uyarı kayboldu.
paulsm4

Yanıtlar:


220

VS Code, TypeScript projeleri için harika bir editör olsa da, her seferinde bir vuruş gerektiriyor. Genellikle, uyarılmadan, bazı dosyalar korkmasına ve şikayet etmesine neden olur. Çoğunlukla düzeltme, tüm açık dosyaları kaydedip kapatmak, sonra açmak gibi görünüyor tsconfig.json. Bundan sonra, rahatsız edici dosyayı hatasız olarak yeniden açabilmelisiniz. Eğer işe yaramazsa, köpürtün, durulayın ve tekrarlayın.

Senin Eğer tsconfig.jsonbelirtir kaynak dosyaları kullanarak filesdiziyi söz konusu dosya VS Kod giriş dosyası ağacı geçerek bulabilirsiniz şekilde başvuruda bulunulan, IntelliSense düzgün sadece edecektir.

Düzenleme: 'Yeniden yükleme penceresi' komutu (yıllar önce eklendi) bu sorunu bir kez ve herkes için çözmelidir.


5
Teşekkür ederim - "dosyaları" tsconfig.json'dan kaldırma sorunu çözme
bensiu

4
Cevap, davamla gerçekten ilgili değildi, ama bir şekilde sorunumu çözmeme yardımcı oldu. Ben VS 2015 kullanıyorum ve xprojve tsconfigdosya değiştirme arasında , benim komut dosyaları ile klasör excludebölümünde listelenen gerçeği kaçırdı tsconfig. Umarım bu birine yardımcı olur.
Stefan Balan

18
Dosya> Klasörü kapat> Benim için çalışılan klasörü aç. Bu, vscode düzgün kapatılmadan makineyi yeniden başlattıktan sonra oldu.
Adrian Moisa

3
Yazı tipi kullanmıyorsam ne olur? Sadece javascript es6?
DDD

3
Ne zaman eklendiğinden emin değilim ama komut paleti artık bu tür şeyler için ideal olan "Pencereyi Yeniden Yükle" ye sahip.
Coderer

185

Uyarıyı kaldırmak için vscode settings.json dosyasına aşağıdakileri eklemem gerekiyor.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Tercihler -> Ayarlar

resim açıklamasını buraya girin


Çok teşekkürler. Es6 + dekoratörler kullanıyorum ve daktilo yüklü değil. Muhteşem.
Akhmedzianov Danilian

3
Bu cevap en iyisidir, çünkü VSCode sorununu çözmek için projede ayrı bir dosya oluşturmaya gerek yoktur.
Rodrigo

ctrl + ,kullanıcı ayarlarını açmak için kısayol tuşu. ...Open settings.jsonsettings.json
usersettings'de

Çok teşekkürler. Çok yararlı.
an0nh4x0r

102

Bu hata, çalışma alanı klasörünüz için "src" klasörünü seçtiğinizde de oluşur.

Kök klasör, "src", "node_modules" öğesinin bulunduğu klasör seçildiğinde hata kaybolur


9
Bunu göndermek için buraya geldim. Bu benim için düzeltildi. Angular 2'yi Angular CLI aracılığıyla kullanıyordum.
async

Yukarıdakilerin anlaşılabilir olmaması durumunda: Vscode, yapılandırma dosyasının bileceği klasörü yüklemelidir. Bir folde daha aşağı yüklemek isterseniz, sanırım bu klasörden ve altından geçerli olacak yeni bir yapılandırma dosyası yazabilirsiniz.
LosManos

Öyleydi. Teşekkür ederim :)
Kamil


32

projenizin içinde tsconfig.json dosyası oluşturun, ardından bu satırları ekleyin

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

25

eklemek typescript.tsdkzorunda benim .vscode/settings.json:

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

5
Bu benim için sorun çözüldü, ama bu hat girer .vscode/settings.jsongöre bu
Fran Rodriguez

1
Ayrıca benim için çözdü, ama .vscodeklasörü yoktu (neden bilmiyorum - ben bir arka uç geliştirici, beni yalnız bırakın!), Bu yüzden adı geçen settings.jsondosya ile kök klasörde bir tane oluşturdum .
Yaş

17

VSCode'da, Dosya => Tercihler => Ayarlar'a (veya Control + virgülüne) gidin ve Kullanıcı Ayarları dosyasını açacaktır. "Javascript.implicitProjectConfig.experimentalDecorators": true ifadesini arayın ve dosyaya experimentalDecorators onay kutusunu işaretleyin ve düzeltmesi gerekir. Benim için oldu.

resim açıklamasını buraya girin


13

Visual Code Studio'da Dosya >> Tercihler >> Ayarlar'a gidin, arama alanında "dekoratör" ifadesini arayın ve resimdeki gibi seçeneği işaretleyin. resim açıklamasını buraya girin


11

Açık settings.jsonaşağıdaki konumda dosya<project_folder>/.vscode/settings.json

veya dosyayı aşağıda belirtildiği gibi menüden açabilirsiniz

VSCode -> File -> Preferences -> Workspace Settings

Deneysel Dekorlar ayarları

Sonra settings.jsondosyaya aşağıdaki satırları ekleyin

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

Bu kadar. ' Deneysel Dekoratörler ' ile ilgili hiçbir uyarı / hata görmeyeceksiniz


11
"Enable_typescript_language_service" komutunu vscode 1.8.1 kullanarak ekledikten sonra "Bilinmeyen yapılandırma ayarı" aldım
David Cheung

5
Projenizde Typcript kullanılıyorsa, bu KORKUNÇ tavsiyedir!
paulsm4

1
"Enable_typescript_language_service" öğesinin devre dışı bırakılması, herhangi bir canlı linting TypeScript teklifini etkin bir şekilde kapatır, lütfen bu öneriye dikkat edin.
Jessy

10

Bu cevap, bir Javascript projesi kullanan ve bir dakikayı kullanan kişiler içindir . Yerine a tsconfig.json dosyası bir kullanabilir jsconfig.json dosyasını.

Sahip özel durumunda dekoratörler uyarıyorum dosya içindeki yazma wan:

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

Buggy davranışları sorulduğunda, yapılandırma dosyasında "içerme" yi belirtmek ve düzenleyiciyi yeniden başlatmak her zaman daha iyidir. Örneğin

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


9

Tsconfig.json dosyasına aşağıdaki satırları ekleyin ve VS Code'u yeniden başlatın.

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

Yeniden başlatma benim için anahtardı. Teşekkürler.
rynop

9

Konuyu işaretlememek için aşağıdakileri eklediğinizden emin olun:

  • Kullanıcı Ayarları değil Çalışma Alanı Ayarları

Dosya >> Tercihler >> Ayarlar altında

"javascript.implicitProjectConfig.experimentalDecorators": doğru

Bu benim için sorunu düzeltti ve ben burada ve diğer yerlerde buldum oldukça birkaç öneri çalıştı.



4

Açıklık ve aptallık uğruna.

1) .vscode / settings.json dosyasını açın.

2) Üzerine "typescript.tsdk": "node_modules / typescript / lib" ekleyin.

3) Kaydet.

4) Visual Studio Code'u yeniden başlatın.


4

Visual Studio'da çalışıyorsanız. Bu düzeltmeyi deneyebilirsiniz

  1. Projenizi visual studio'dan boşaltın
  2. Proje ana dizininize gidin ve "csproj" dosyasını açın.
  3. Resimde gösterildiği gibi bu bölüme TypeScriptExperimentalDecorators ekleyin

    resim açıklamasını buraya girin

    1. Visual Studio projeyi yeniden yükleyin.

bu konumda daha fazla ayrıntı görün .


4

* .Ts dosyalarını derlemek için cli kullanıyorsanız, aşağıdaki komutu kullanarak experimentalDecorators'ı ayarlayabilirsiniz:

 tsc filename.ts --experimentalDecorators "true"

Teşekkürler, bu benim frustation kurtardı. Sorgulayıcı ile aynı ayarlara sahiptim , ancak Sublime Text 3 kullanıyordum ve çözümünüz yardımcı oldu!
Irfandy Jip

4

Lütfen VS Kodunuzda yalnızca src klasörünün değil, tüm projenin klasörüne karşı çıktığınızı kontrol edin, çünkü yalnızca src'yi açarsanız, ts.config.json (proje klasöründe bulunur) dosyası kapsamda olmayacaktır ve VS deneysel dekoratör parametrelerini tanımayacaktır.

Benim durumumda bu, bu sorunla ilgili tüm sorunları düzeltti.


Bu da benim meselemdi. Düğüm_modüllerini görebiliyor musunuz? Tsconfig.json dosyasını görebiliyor musunuz? Değilse, yeni bir vsCode penceresi açın, eski pencereyi kapatın, dosya -> klasörü aç'ı seçin ve yalnızca seçmek yerine srcve öğesinin üst klasörünü seçtiğinizden emin olun . node_modulessrc
Kyle Vassella


2

Proje adı / src yerine projenin tüm klasörünü aç

tsconfig.json src klasöründe değil


1

Tsconfig.json dosyasından "baseUrl": "" öğesini kaldırarak uyarıyı düzelttim


1

Proje dışında var olan bir TS dosyasını açarsanız, bu sorunla karşılaşabilirsiniz. Örneğin, lerna kullanıyorum ve başka bir paketten açık bir dosya vardı. Diğer paketin deneysel dekoratörler ile kendi tsconfig'i olmasına rağmen, VsCode onurlandırmaz.


1

Açısal 2'de bir Enjekte Edilebilir Hizmetler oluştururken aynı sorunla karşı karşıya kaldım. Tsconfig.json'da her şeyim var.

@Injectable()
export class ColorsImmutable {

Ve düzeltme, hizmet sağlayıcılar dizisini kullanarak hizmeti Modül Düzeyinde veya Bileşen Düzeyinde kaydetmekti.

providers:[ColorsImmutable ],

1

Deno JavaScript ve TypeScript çalışma zamanını kullanıyorsanız ve tsconfig.json veya VSCode ide ayarlarında experimentalDecorators: true özelliğini etkinleştirirseniz. Çalışmayacak. Deno gereksinimine göre, bir Deno dosyasını çalıştırırken tsconfig öğesini bayrak olarak sağlamanız gerekir. Bkz. Özel TypeScript Derleyici Seçenekleri

Benim özel durumumda bir Deno testi yapıyordum ve kullandım.

$ deno test -c tsconfig.json

Eğer bir dosyaysa,

 $ deno run -c tsconfig.json mod.ts

tsconfig.json'um

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

Bunu zaten yapıyorum ve şansım yok, çünkü dokümanlarda deneysel özellikler çalışmaz,
Ezzabuzaid

Çalışacak. Tsconfig.json adresimin tam içeriğinin güncellenmiş yanıtına bakın. O zaman bu bağlantıya bakın github.com/manyuanrong/dso/issues/18
tksilicon

0

Bu seçeneği tsconfig.json'a ekledim, "baseUrl": "front-end"ön ucu açısal cli projenizin adıyla değiştirin.


0

Ayrıca deneyebilirsiniz ng build. Ben sadece uygulamayı yeniden inşa ettik ve şimdi uymuyor.


0

Böylece modül adınızı dosya adıyla eşleştirerek bunun üstesinden gelebilirsiniz. BankSpecialtyModule modül adına sahipseniz, dosya adı olmalıdır. Banka-specialty.module.ts


0

Yeni bir modül oluşturup * .module.ts ve * -routing.module.ts dosyamı başka bir klasöre taşıdığımda bu hatayla karşılaştım. İki dosyayı sildikten ve modülü yeni klasörde oluşturduktan sonra mükemmel çalışıyor. Ortam Açısal Sürüm 9 ve Açısal CLI sürüm 9.1.0


0

Benim için bu hata "Dekoratörler için deneysel destek, gelecekteki bir sürümde değişime tabi olan bir özelliktir. (Vb.)" Yalnızca Açısal bir projede VS Kodunda ve yalnızca yeni bir Hizmet oluştururken oldu.

Yukarıdaki çözüm: "Visual Code Studio'da Dosya >> Tercihler >> Ayarlar'a gidin, arama alanında" dekoratör "Ara ve JavaScript› Örtülü Proje Yapılandırması: Deneysel Dekoratörler ”seçeneği sorunu çözdü.

Ayrıca, terminal penceresindeki ng hizmetini durdurmak ve yeniden başlatmak hatayı yeniden derledikten sonra kaybolur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.