टाइपस्क्रिप्ट "सेव पर संकलित" सुविधा दृश्य स्टूडियो 2015 में काम नहीं कर रही है


85

विजुअल स्टूडियो 2015 में अपग्रेड करने के बाद "सेव ऑन संकलित" फीचर मेरे लिए काम नहीं कर रहा है। जब मैं .tsअपने प्रोजेक्ट में एक फाइल में बदलाव करता हूं और सेव करता हूं, तो आईडीई के नीचे स्थित स्टेटस बार कहता है Output(s) generated successfully, लेकिन जेनरेट की गई .jsफाइल doesn 'परिवर्तन नहीं।

यहाँ मैंने कोशिश की है:

  • निम्नलिखित को मूल <Project>तत्व में जोड़ना मेरे में .csproj:

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • "स्वचालित रूप से संकलित टाइपस्क्रिप्ट फ़ाइलें जो एक परियोजना का हिस्सा नहीं हैं" को जाँचना और अनचेक करना Tools -> Options -> TypeScript -> Project:

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

  • मेरी परियोजना के टाइपस्क्रिप्ट बिल्ड प्रॉपर्टीज में "कम्पाइल ऑन सेव" को सुनिश्चित करने के लिए डबल चेकिंग है:

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

मैं क्या खो रहा हूँ?

एक साइड नोट के रूप में, टाइपस्क्रिप्ट संकलन चरण एक नियमित बिल्ड द्वारा ट्रिगर होने पर अपेक्षा के अनुरूप काम करता है।


यह सुनिश्चित करने के लिए जांचें कि JS फाइलें वास्तव में अपडेट नहीं हो रही हैं। मैं थोड़ी देर के लिए VS2013 के साथ एक मुद्दे पर भाग गया, जहां 'JS पूर्वावलोकन' अपडेट नहीं हो रहा था, लेकिन JS फाइलें वास्तव में अपडेट हो रही थीं। कोड अपडेट किया गया है या नहीं यह देखने के लिए मैन्युअल रूप से खोलें। इसका कारण अज्ञात था लेकिन समाधान वीएस को बंद करना और इसे फिर से खोलना था। मैंने VS2015 में अभी तक कोई भी TS फाइल बनाने की कोशिश नहीं की है।
जेसन एच

1
उन्होंने आरटीएम के लिए इसे तोड़ दिया। इस प्रश्न को देखें stackoverflow.com/questions/31559653/…
Simon_Weaver

1
जब आप दृश्य स्टूडियो को व्यवस्थापक के रूप में चलाते हैं तो मैं काम करता हूं!
अलिस्बाववारी

@alisabzevari सुझाव के लिए धन्यवाद, लेकिन व्यवस्थापक के रूप में चलना मेरे लिए इस समस्या को ठीक नहीं करता है।
नाथन फ्रेंड

जवाबों:


139

मेरे लिए यह इस विकल्प में था tsconfig.json:

"compileOnSave": true,
"compilerOptions": { ... },

इस परिवर्तन को प्रभावी करने के लिए Visual Studio को पुनरारंभ करें।


कोणीय 2 का उपयोग करते हुए, आरसी 1 के लिए कई अन्य चीजों के बीच मेरे टाइपस्क्रिप्ट को अपडेट किया और स्वाभाविक रूप से सब कुछ टूट गया जब तक कि मैंने अंततः यह नहीं पाया कि यह मेरा मुद्दा था। जब तक मुझे 1.8.10 तक अद्यतन नहीं किया गया, तब तक इसकी आवश्यकता नहीं थी।
जेम्स

5
हाँ, tsconfig.json में विकल्प जोड़ें और यदि प्रोजेक्ट को VS समाधान में होस्ट किया गया है, तो प्रोजेक्ट को पुनः लोड करें। तब ts को सेव पर js में संकलित किया जाएगा।
ZZZ

1
मेरे लिए विजुअल स्टूडियो 2015 अपडेट 2 पर टाइपस्क्रिप्ट 1.8.29.0 के साथ जोड़ने "watch": trueका compilerOptionsकाम
वाहिद अमीरी

1
टाइपस्क्रिप्ट 2 के समय के आसपास, किसी भी समय दृश्य स्टूडियो इन सेटिंग्स को .csprojफाइल में रखने से स्थानांतरित कर दिया गया था tsconfig.json। यदि आपकी परियोजना के गुण टाइपस्क्रिप्ट पृष्ठ अक्षम नहीं हैं, तो इसका मतलब है कि आपके पास Visual Studio के लिए टाइपस्क्रिप्ट टूल का एक पुराना संस्करण स्थापित है और आपको microsoft.com/en-us/download/details.aspx?id=48593
Cchamberlain

32

मैं आज इस समस्या पर "watch":trueअड़ गया : मैंने तय किया कि नए संकलक विकल्प का उपयोग करके , JSON के माध्यम से हाल के टाइपस्क्रिप्ट संस्करण में भी उपलब्ध है:

{
  "compilerOptions": {
    "watch": true
  }
}

ऐसा करने के बाद, मुझे आउटपुट विंडो में दिखाई देने वाली निम्न त्रुटि से संबंधित एक और समस्या को हल करना था:

Object doesn't support property or method 'watchFile'

यह पता चला कि मेरा सिस्टम टाइपस्क्रिप्ट (1.0.x) के पुराने संस्करण का उपयोग कर रहा था, इसके बावजूद कि मुझे यकीन है कि मेरे पास एक नया था जो विज़ुअल स्टूडियो 2015 अपडेट 1 (1.7) के साथ आया था । यदि आप इस समस्या में भाग लेते हैं, तो आप आसानी tsc -vसे कमांड प्रॉम्प्ट से टाइप करके अपने tsc वर्जन को देख सकते हैं ।

यदि यह कहता है 1.0.xया कुछ भी <1.7, यह संभवतः इस तथ्य के कारण है कि आपके पैठ पर्यावरण चर में कुछ पुराने संदर्भ हैं। सुनिश्चित करें कि आपके पास अपने Microsoft SDKs फ़ोल्डर के अंदर की जाँच करके 1.7 या बाद में स्थापित किया गया है, जो Visual Studio द्वारा अद्यतन किए गए टाइपस्क्रिप्ट पैकेजों को स्थापित करने के लिए उपयोग किया जाता है:

C:\Program Files (x86)\Microsoft SDKs\TypeScript

यदि नहीं, तो तदनुसार अद्यतन करें। ओपन CPanel > सिस्टम > उन्नत > पर्यावरण चर , सिस्टम चर का चयन करें और संपादित करें पर क्लिक करें ; टाइपस्क्रिप्ट फ़ोल्डर के किसी भी संदर्भ की तलाश करने वाली सूची के माध्यम से ब्राउज़ करें, उनमें से किसी एक को बदलकर अपने टाइपस्क्रिप्ट सबसे हाल ही में स्थापित संस्करण ( 1.7या ऊपर) को इंगित करें और किसी भी अन्य डुप्लिकेट को हटा दें। नीचे स्क्रीनशॉट भी देखें:

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

अतिरिक्त जानकारी के लिए, इस पोस्ट को मेरे ब्लॉग पर पढ़ें ।


1
मेरे लिए win10 पर, सूची में नाम "पथ" था और सिस्टम चर नहीं था। जब आप इसका चयन करते हैं (इसका मान एक लंबा अर्धविराम-संक्षिप्त स्ट्रिंग है), और फिर संपादित करें पर क्लिक करके इस उत्तर में दिखाई गई मोडल विंडो प्राप्त करें। मेरा समाधान संकलक जोड़> घड़ी> सत्य को जोड़ने के लिए नहीं था, लेकिन संकलन करने के लिए सेट करें> सच (संकलक से एक कदम)
BobbyTables 13'16

1
मेरे लिए, इस विकल्प को सेट करने से JsErrorScriptException (0x30001) की एक त्रुटि हुई। खोज करने के बाद, मैं इस मुद्दे पर आया github.com/Microsoft/TypeScript/issues/7362 । मिलोस्ज़ वियरज़बिकि का समाधान ("कंपाइलऑनसेव स्थापित करना") मेरे लिए काम करता है, लेकिन केवल वी.एस.
फिकरात्रा

मुझे भी यही समस्या थी। U और @zedd ने मुझे कई घंटे बचाया। यह पोस्ट भी सहायक है: ryadel.com/en/…
डूडी

8

उपाय:

मेरे लिए, और मुझे पूरा यकीन है कि यह दूसरों के लिए भी है, यह tsconfig.json में एक गलती के कारण था।

आपको "compileOnSave" जोड़ने की आवश्यकता है: सच। लेकिन वैश्विक अनुभाग में संकलक के अंदर नहीं।

Wrong:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "compileOnSave": true

  },
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

Correct:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"

  },
"compileOnSave": true,
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

सादर,

एंडर्स दोनों बसाचट।


6

ऐसा लगता है कि इस मुद्दे को TypeScript Language Servicesएक्सटेंशन के सबसे हालिया अपडेट के साथ हल किया गया है ।

इस अद्यतन को लागू करने के निर्देशों के लिए यह उत्तर देखें


2

मेरे मामले में, मैंने वीएस 2012 के साथ विजुअल स्टूडियो कम्युनिटी 2015 स्थापित किया था। मैं 2012 में टाइपस्क्रिप्ट के लिए वेब एसेंशियल का उपयोग कर रहा था जो कि 2015 के साथ संघर्ष में दिखाई दिया।

2012 में वेब एसेंशियल को अनइंस्टॉल करना मेरे लिए समस्या तय कर दिया।


मैं वीएस कम्युनिटी का उपयोग कर रहा हूं और वेब एसेंशियल्स को अनइंस्टॉल करना मेरे लिए ट्रिक है। धन्यवाद और उत्थान!
रे

2

टाइपस्क्रिप्ट 2 के साथ आपको "आउटडिर" को हटाना होगा: अपने tsconfig से। दृश्य स्टूडियो में मेरे लिए बग को ठीक करें।


आउटरीयर tsconfig कहाँ है? Thx
जय

@ संजय आपको टाइपस्क्रिप्ट की कॉन्फ़िगरेशन फ़ाइल tsconfig.json में विकल्प नहीं दिखता है?
यवन

1

परियोजना के गुणों में -> "टाइपस्क्रिप्ट बिल्ड", आप बस अनचेक भी कर सकते हैं "किसी भी त्रुटि की रिपोर्ट होने पर आउटपुट का उत्सर्जन न करें।" यह जाँच करने के बाद, जहां कोई त्रुटि है या नहीं, बचाने पर ट्रांसप्लिंग को निष्क्रिय करने लगता है।


1

"compileOnSave": true,मेरे लिए काम नहीं कर रहा था। अंत में मुझे पता चला कि विजुअल स्टूडियो उस "compileOnSave": true,मूल्य का सम्मान नहीं करता है यदि वह किसी अन्य .jsonफ़ाइल में परिभाषित किया गया है जिसे आप बढ़ा रहे हैं। इसे कार्य करने के लिए मूल में होना चाहिए।


1

अपने terminal/cmdऔर टाइप में फ़ाइल का पता लगाएँ: C: \ file.ts

tsc file.ts -w // watches for file changes and converts on save

1

जांचें कि क्या आपके पास टाइपस्क्रिप्ट संस्करण स्थापित है जो परियोजना में कॉन्फ़िगर किया गया है। किसी तरह मुझे कोई चेतावनी नहीं मिली कि मेरे पास टाइपस्क्रिप्ट 3.7 स्थापित नहीं है, लेकिन संकलन-ऑन-सेव सुविधा ने चुपचाप काम करना बंद कर दिया।

एक बार जब मैंने टाइपस्क्रिप्ट 3.7 स्थापित किया, तो यह फिर से काम कर रहा था।


1

यकीन नहीं होता कि इससे किसी को मदद मिलेगी।

हालांकि मुझे संकलन करने में समस्या हो रही थी, लेकिन यह मुझे बचाने के लिए संकलन कर रहा था। मेरे पास सभी फाइलों को दिखाने के लिए मेरा समाधान एक्सप्लोरर टूलबार नहीं था।

फ़ाइल वहाँ थी, बस बेसब्री से इंतजार किया जा रहा है कि परियोजना में जोड़ा जाए।

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


0

यहां भी यही समस्या है। मैं विज़ुअल स्टूडियो 2015 अपडेट 3 और टाइपस्क्रिप्ट 2.9.2.0 का उपयोग कर रहा हूं। टूल / विकल्प / प्रोजेक्ट और समाधान / बाहरी वेब टूल में, मैंने $ (PATH) को दूसरे स्थान पर अपग्रेड किया। इन सभी विन्यासों के साथ, संकलित करें: सच मेरे लिए काम नहीं करता है। वर्कअराउंड सॉल्यूशन एक कमांड लाइन है, ng build --watchजो साइड में चलती है और नोड को ऑटो कंप्लायंस का ख्याल रखती है


0

विजुअल स्टूडियो 2019 में मेरे पास एक समान लेकिन समान मुद्दा नहीं था

  • मेरा प्रोजेक्ट टाइपस्क्रिप्ट 2.9 का उपयोग करने के लिए स्थापित किया गया था
  • मेरे पास टाइपस्क्रिप्ट 3.8 स्थापित था, और कोड ने संकलन किया था, लेकिन सहेजें पर संकलन नहीं करेगा

मैंने पुराने संस्करण को टाइप किया, टाइपस्क्रिप्ट 2.9, वीएस को पुनः आरंभ किया और फिर यह जीवन में फट गया

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