टाइपस्क्रिप्ट संकलन में चेतावनी देने वाले प्रायोगिक सज्जाकार


247

मुझे चेतावनी मिली ...

डेकोरेटर्स के लिए प्रायोगिक समर्थन एक ऐसी सुविधा है जो भविष्य की रिलीज़ में परिवर्तन के अधीन है। इस चेतावनी को हटाने के लिए 'प्रयोगात्मक प्रायोगिक' विकल्प का निर्धारण करें।

... भले ही tsconfig.json में मेरे संकलक निम्नलिखित सेटिंग्स हैं:

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

क्या अजीब है कि कुछ यादृच्छिक कक्षाएं जो सज्जाकारों का उपयोग करती हैं, वे उस चेतावनी को नहीं दिखाती हैं, लेकिन एक ही परियोजना में बाकी काम करती हैं।

टाइपस्क्रिप्ट कंपाइलर में इस तरह के व्यवहार का क्या कारण हो सकता है?


19
क्या आपने वीएस कोड को फिर से शुरू करने की कोशिश की है? मैंने पाया है कि tsconfig.json को कभी-कभी बदलने के बाद यह आवश्यक है।
डेविड शेरेट

2
आप उत्तर उत्तर को उड़ाने की कोशिश कर सकते हैं। यह मेरे लिए काम करता है! stackoverflow.com/a/38970591/2468781
eildiz

10
संयोग से अगर कोई और इसमें चलता है जो वीएस प्रोफेशनल का उपयोग कर रहा है, वीएस कोड का नहीं, तो आपने .tsमैन्युअल रूप से कोणीय प्रोजेक्ट में एक फ़ाइल जोड़ी होगी ; यदि हां, तो डिफ़ॉल्ट टीएस संकलन कोणीय सीएलआई के साथ विरोध कर रहा है। फ़ाइल को राइट-क्लिक करें -> गुण -> बिल्ड एक्शन: कोई नहीं। यदि आवश्यक हो तो फिर वी.एस. पुनः आरंभ करें।
पब्रानिस

2
VS कोड पुनरारंभ ने मुझे समस्या को हल करने में मदद की।
सीएमए

4
मैं code .गलत निर्देशिका में VSCode ( ) शुरू करने के लिए हुआ । सब कुछ ठीक लग रहा था - मैंने देखा और अपनी सभी फाइलों को संपादित कर सकता था - इसलिए पहली बार में मैंने कुछ भी नोटिस नहीं किया "गलत"। लेकिन मुझे वह बेवकूफ "प्रायोगिक सज्जाकार" एक पर चेतावनी मिली - और केवल एक! - कोणीय घटक। मैंने VSCode को बाहर कर दिया, फिर code .से शुरू किया ( फिर से) CORRECT डायरेक्टरी (मेरा कोणीय प्रोजेक्ट रूट) में .. और चेतावनी गायब हो गई।
पल्स्म ४

जवाबों:


219

हालांकि वीएस कोड टाइपस्क्रिप्ट परियोजनाओं के लिए एक महान संपादक है, इसे हर बार और फिर किक की आवश्यकता होती है। अक्सर, चेतावनी के बिना, कुछ फाइलें इसका कारण बनती हैं और शिकायत करती हैं। अधिकतर फिक्स सभी खुली हुई फाइलों को सहेजने और बंद करने के लिए लगता है, फिर खोलें tsconfig.json। उसके बाद आपको बिना किसी त्रुटि के अपमानजनक फ़ाइल को फिर से खोलने में सक्षम होना चाहिए। यदि यह काम नहीं करता है, तो इसके बजाय, कुल्ला और दोहराएं।

यदि आपका tsconfig.jsonस्रोत filesसरणी का उपयोग करके अपनी स्रोत फ़ाइलों को निर्दिष्ट करता है , तो IntelliSense केवल सही ढंग से कार्य करेगा यदि प्रश्न में फ़ाइल को संदर्भित किया जाता है जैसे कि वीएस कोड इसे इनपुट फ़ाइल ट्री को ट्रेस करके पा सकता है।

संपादित करें: 'पुनः लोड विंडो' कमांड (अब से पहले युगों को जोड़ा गया) को इस समस्या को एक बार और सभी के लिए हल करना चाहिए।


5
धन्यवाद - tsconfig.json से "फाइलें" हटाने से समस्या का समाधान
bensiu

4
उत्तर वास्तव में मेरे मामले के लिए प्रासंगिक नहीं था लेकिन किसी तरह मेरी समस्या का पता लगाने में मेरी मदद की। मैं वीएस 2015 का उपयोग कर रहा हूं xprojऔर tsconfigफ़ाइल और फ़ाइल बदलने के बीच , मैंने इस तथ्य को याद किया कि मेरी स्क्रिप्ट फ़ाइलों वाला फ़ोल्डर किस excludeअनुभाग में सूचीबद्ध था tsconfig। आशा है कि यह किसी की मदद करता है।
स्टीफन बालन

18
फाइल> क्लोज्ड फोल्डर> ओपन फोल्डर मेरे लिए काम करता है। ऐसा तब हुआ जब मैंने vscode को ठीक से बंद किए बिना मशीन को पुनः आरंभ किया।
एड्रियन मोइसा

3
यदि मैं टाइपस्क्रिप्ट का उपयोग नहीं कर रहा हूं तो क्या होगा? केवल जावास्क्रिप्ट es6?
DDD

3
मुझे यकीन नहीं है कि जब इसे जोड़ा गया था, लेकिन कमांड पैलेट में अब "रीलोड विंडो" है, जो इस तरह की चीज के लिए आदर्श है।
कोडर

184

मुझे चेतावनी हटाने के लिए vscode की सेटिंग.जसन फ़ाइल में निम्नलिखित जोड़ना है।

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> प्राथमिकताएँ -> सेटिंग्स

यहां छवि विवरण दर्ज करें


बहुत बहुत धन्यवाद। मैं es6 + सज्जाकार का उपयोग कर रहा हूं और टाइपस्क्रिप्ट स्थापित नहीं है। बहुत बढ़िया।
अख्मेडियनोव डैनिलियन

3
यह उत्तर सबसे अच्छा है, क्योंकि VSCode समस्या को हल करने के लिए प्रोजेक्ट में एक अलग फ़ाइल बनाने की कोई आवश्यकता नहीं है।
रोड्रिगो

ctrl + ,उपयोगकर्ता कुंजी खोलने के लिए शॉर्टकट कुंजी। usersettings पर क्लिक करें 3 डॉट्स ( ...) फिर पॉप अप पर क्लिक Open settings.jsonकरें खोलने के लिएsettings.json
suhailvs

बहुत बहुत धन्यवाद। बहुत मददगार।
a0nh4x0r

102

यह त्रुटि तब भी होती है जब आप अपने कार्यक्षेत्र फ़ोल्डर के लिए "src" फ़ोल्डर चुनते हैं।

जब रूट फ़ोल्डर, फ़ोल्डर जहां "src", "node_modules" स्थित हैं, को चुना जाता है, तो त्रुटि गायब हो जाती है


9
यह पोस्ट करने के लिए यहाँ आया था। इसने मेरे लिए इसे ठीक कर दिया। मैं कोणीय सीएलआई के माध्यम से कोणीय 2 का उपयोग कर रहा था।
async

यदि उपर्युक्त समझ में नहीं आता है: Vscode उस फ़ोल्डर को लोड करना होगा जहां कॉन्फ़िगरेशन फ़ाइल को इसके बारे में जानना है। यदि आप एक फोल्ड को और नीचे लोड करना चाहते हैं, तो मुझे लगता है कि आप एक नई कॉन्फ़िग फ़ाइल लिख सकते हैं जो उस फ़ोल्डर और नीचे से मान्य होगी।
लॉसमनोस

वह यह था। धन्यवाद :)
कामिल


32

अपनी परियोजना के अंदर फ़ाइल tsconfig.json बनाएँ, फिर इस पंक्तियों को जोड़ें

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

25

typescript.tsdkमेरे साथ जोड़ना है .vscode/settings.json:

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

5
यह समस्या मेरे लिए हल है, लेकिन उस लाइन में चला जाता है .vscode/settings.jsonके अनुसार इस
फ्रान रोड्रिगेज

1
मेरे लिए भी इसे हल किया है, लेकिन मेरे पास .vscodeफ़ोल्डर नहीं था (मुझे पता नहीं क्यों - मैं बैकएंड देव हूं, मुझे केवल छोड़ दो!), इसलिए मैंने उक्त settings.jsonफाइल के साथ रूट फ़ोल्डर में एक बनाया ।
आवेज

16

VSCode में, फ़ाइल => प्राथमिकताएँ => सेटिंग (या नियंत्रण + अल्पविराम) पर जाएँ और यह उपयोगकर्ता सेटिंग्स फ़ाइल को खोलेगा। "Javascript.implicitProjectConfig.experimentalDecorators" खोजें: यह सच है और फिर फ़ाइल के लिए प्रायोगिक दाताओं के लिए चेकबॉक्स की जाँच करें और इसे ठीक करना चाहिए। इसने मेरे लिए किया।

यहां छवि विवरण दर्ज करें


12

विज़ुअल कोड स्टूडियो में फ़ाइल >> प्राथमिकताएँ >> सेटिंग्स, खोज क्षेत्र में "डेकोरेटर" खोजें और छवि के अनुसार विकल्प जांचें। यहां छवि विवरण दर्ज करें


11

settings.jsonनिम्न स्थान पर फ़ाइल खोलें<project_folder>/.vscode/settings.json

या आप मेनू से फाइल को नीचे बताए अनुसार खोल सकते हैं

VSCode -> File -> Preferences -> Workspace Settings

प्रयोगात्मक सेटिंग्स

फिर settings.jsonफ़ाइल में निम्न पंक्तियाँ जोड़ें

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

बस इतना ही। आप 'के बारे में कोई चेतावनी / त्रुटि दिखाई देगी experimentalDecorators '


11
मुझे vscode 1.8.1 का उपयोग करके "enable_typescript_language_service" जोड़ने के बाद "अज्ञात कॉन्फ़िगरेशन सेटिंग" मिला
David Cheung

5
यदि आपकी परियोजना टाइपस्क्रिप्ट का उपयोग करती है तो यह सलाह है!
पल्सम

1
"Enable_typescript_language_service" को अक्षम करने से प्रभावी रूप से कोई भी लाइव लाइनिंग टाइपस्क्रिप्ट ऑफ़र बंद हो जाएगा कृपया इस सुझाव से बचें।
जेसी

10

यह उत्तर उन लोगों के लिए है जो जावास्क्रिप्ट प्रोजेक्ट का उपयोग कर रहे हैं और टाइपस्क्रिप्ट नहीं । इसके बजाय एक के tsconfig.json फ़ाइल आप एक का उपयोग कर सकते jsconfig.json फ़ाइल।

डेकोरेटर को चेतावनी देने के विशेष मामले में आप फ़ाइल के अंदर लिखना चाहते हैं:

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

पूछे जाने वाले बुग्यालों के व्यवहार को कॉन्फ़िगर फ़ाइल में "शामिल" निर्दिष्ट करना और संपादक को पुनरारंभ करना हमेशा बेहतर होता है। उदाहरण के लिए

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


9

Tsconfig.json में निम्न पंक्तियाँ जोड़ें और VS कोड को पुनरारंभ करें।

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

पुनरारंभ मेरे लिए महत्वपूर्ण था। धन्यवाद।
रिनोप

9

बिंदु पर विश्वास करने के लिए नहीं, लेकिन निम्नलिखित को जोड़ना सुनिश्चित करें

  • कार्यक्षेत्र सेटिंग्स उपयोगकर्ता सेटिंग्स नहीं

फ़ाइल के तहत >> वरीयताएँ >> सेटिंग्स

"javascript.implicitProjectConfig.experimentalDecorators": true

इसने मेरे लिए इस मुद्दे को निर्धारित किया, और मैंने यहाँ और अन्य स्थानों पर मिले कुछ सुझावों की कोशिश की।


7

दृश्य स्टूडियो 2017 के तहत मुझे हाल ही में यह समस्या थी - यह पता चला कि यह वीएस की एक "विशेषता" के कारण था - tsconfig.json की अनदेखी जब बिल्ड एक्शन कंटेंट पर सेट नहीं होता है

इसलिए बिल्ड एक्शन को कंटेंट में बदलने और समाधान को फिर से लोड करने से समस्या हल हो गई।


4

स्पष्टता और मूर्खता के लिए।

1) .vscode / settings.json खोलें।

2) उस पर "टाइपस्क्रिप्ट" टीएसडीके: "नोड_मॉड्यूल्स / टाइपस्क्रिप्ट / लीब" जोड़ें।

3) इसे बचाओ।

4) विज़ुअल स्टूडियो कोड को पुनरारंभ करें।


4

यदि आप विजुअल स्टूडियो में काम कर रहे हैं। आप इसे ठीक कर सकते हैं

  1. दृश्य स्टूडियो से अपनी परियोजना को उतारें
  2. अपने प्रोजेक्ट होम डायरेक्टरी पर जाएं और "csproj" फाइल खोलें।
  3. इस अनुभाग में TypeScriptExperimentalDecorators जोड़ें जैसा कि छवि में दिखाया गया है

    यहां छवि विवरण दर्ज करें

    1. दृश्य स्टूडियो में प्रोजेक्ट को पुनः लोड करें।

इस स्थान पर अधिक विवरण देखें ।


4

यदि आप * .ts फ़ाइलों को संकलित करने के लिए cli का उपयोग कर रहे हैं, तो आप निम्न कमांड का उपयोग करके प्रयोगात्मक निर्देशकों को सेट कर सकते हैं:

 tsc filename.ts --experimentalDecorators "true"

धन्यवाद, इससे मेरी निराशा बच गई। प्रश्नकर्ता के रूप में मेरे पास एक ही सेटिंग थी, हालांकि मैं उदात्त पाठ 3 का उपयोग कर रहा था , और आपका समाधान मददगार साबित हुआ है!
इरफैंडी जिप

4

कृपया अपने वीएस कोड में पूरे प्रोजेक्ट का फोल्डर चेक करें और केवल src फोल्डर ही नहीं, क्योंकि अगर आप केवल src खोलते हैं, तो ts.config.json (प्रोजेक्ट फोल्डर में स्थित) फाइल स्कोप में नहीं होगी, और वीएस प्रायोगिक सज्जाकार मापदंडों को मान्यता नहीं देगा।

मेरे मामले में यह इस मुद्दे से संबंधित सभी समस्याओं को हल करता है।


यह भी मेरा मुद्दा था। क्या आप नोड_मॉड्यूल देख सकते हैं? क्या आप tsconfig.json देख सकते हैं? यदि नहीं, तो, एक नया vsCode खिड़की, बंद पुराने विंडो खोलने फ़ाइल का चयन -> खुले फ़ोल्डर, और सुनिश्चित करें कि आप की पैरेंट फ़ोल्डर का चयन कर srcऔर node_modules, बल्कि सिर्फ चुनाव से src
काइल वासेला

3
  1. VScode खोलें।
  2. Ctrl + अल्पविराम दबाएँ
  3. स्क्रीन शॉट में दिए गए निर्देशों का पालन करें
    1. प्रयोगात्मक प्राध्यापकों के बारे में खोजें
    2. संपादित करें



1

यदि आप प्रोजेक्ट के बाहर मौजूद TS फ़ाइल खोलते हैं तो आप इस समस्या में भाग सकते हैं। उदाहरण के लिए, मैं lerna का उपयोग कर रहा हूं और एक फाइल दूसरे पैकेज से खुली है। हालांकि यह अन्य पैकेज प्रायोगिक सज्जाकारों के साथ खुद का tsconfig था, लेकिन VsCode इसका सम्मान नहीं करता है।


1

मुझे एक ही समस्या का सामना करना पड़ा जबकि कोणीय 2 में एक विशेषण सेवाएँ बनाते हुए । मेरे पास tsconff.json में सभी चीजें हैं। इसलिए मुझे ColorsImmutable लाइन में यह त्रुटि मिल रही थी।

@Injectable()
export class ColorsImmutable {

और फिक्स प्रदाता सरणी का उपयोग करके मॉड्यूल स्तर या घटक स्तर पर सेवा को पंजीकृत करना था।

providers:[ColorsImmutable ],

1

यदि आप डेनो जावास्क्रिप्ट और टाइपस्क्रिप्ट रनटाइम का उपयोग कर रहे हैं और आप प्रायोगिक डेकोलेटर सक्षम करते हैं: tsconfig.json या VSCode विचारधारा सेटिंग्स में सही। यह काम नहीं करेगा। Deno आवश्यकता के अनुसार, आपको Deno फ़ाइल चलाते समय ध्वज के रूप में tsconfig प्रदान करना होगा। कस्टम टाइपस्क्रिप्ट कंपाइलर विकल्प देखें

अपने विशेष मामले में मैं एक डेनो परीक्षण चला रहा था और उसका इस्तेमाल किया था।

$ deno test -c tsconfig.json

यदि यह एक फ़ाइल है, तो आपके पास कुछ ऐसा है

 $ deno run -c tsconfig.json mod.ts

मेरी tsconfig.json

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

मैं पहले से ही यह कर रहा हूं और अभी तक कोई भाग्य नहीं है, क्योंकि वे डॉक्स में राज्य करते हैं प्रायोगिक विशेषताएं काम नहीं करेंगी,
एज़ाबुजैड

यह काम करेगा। मेरे tsconfig.json की सामग्री का अद्यतन उत्तर देखें। फिर इस लिंक को देखें github.com/manyuanrong/dso/issues/18
tksilicon

0

मैंने इस विकल्प को tsconfig.json में जोड़ा, "baseUrl": "front-end"अपने कोणीय-क्ली प्रोजेक्ट के नाम के साथ फ्रंट-एंड बदलें।


0

आप भी साथ आजमा सकते हैं ng build। मैंने सिर्फ ऐप को फिर से बनाया है और अब यह अनुपालन नहीं कर रहा है।


0

तो यह पता चलता है कि आप फ़ाइल नाम के साथ अपने मॉड्यूल नाम का मिलान करके इसे प्राप्त कर सकते हैं। यदि आपके पास मॉड्यूल का नाम BankSpecialtyModule है तो फ़ाइल का नाम होना चाहिए। बैंक-specialty.module.ts


0

मैंने इस त्रुटि का अनुभव किया जब मैंने एक नया मॉड्यूल बनाया और अपने * .module.ts और * -rout.module.ts फ़ाइल को किसी अन्य फ़ोल्डर में स्थानांतरित किया। जब मैंने दो फ़ाइलों को हटा दिया और नए फ़ोल्डर पर मॉड्यूल बनाया तो यह पूरी तरह से काम करता है। पर्यावरण कोणीय संस्करण 9 और कोणीय सीएलआई संस्करण 9.1.0

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.