2011-11-19 12 views
25

जैसा कि मैं कॉफीस्क्रिप्ट के साथ पहली बार खेल रहा था, मैं एक समस्या में भाग गया।कॉफीस्क्रिप्ट उदाहरण में अप्रत्याशित 'इंडेंट' कोड

kids = 
    brother: 
    name: "Max" 
    age: 11 
    sister: 
    name: "Ida" 
    age: 9 

हालांकि, जब मुझे लगता है कि कोड को संकलित करने का प्रयास करें, मैं:

आदेश मेरी समस्या डिबग करने में, मैं कॉफी स्क्रिप्ट साइट से कोड के उदाहरण बिट्स से एक के साथ मेरी पूरी फ़ाइल की जगह करने की कोशिश की
Error: In coffee/main.coffee, Parse error on line 3: Unexpected 'INDENT' 
    at Object.parseError (/usr/lib/coffeescript/parser.js:501:11) 
    at Object.parse (/usr/lib/coffeescript/parser.js:573:32) 
    at Object.compile (/usr/lib/coffeescript/coffee-script.js:23:22) 
    at /usr/lib/coffeescript/command.js:99:27 
    at /usr/lib/coffeescript/command.js:72:28 
    at fs:84:13 
    at node.js:773:9 
In coffee/main.coffee, Parse error on line 3: Unexpected 'INDENT' 

चूंकि यह कॉफीस्क्रिप्ट साइट से कोड है, इसलिए मुझे लगता है कि कोड स्वयं समस्या नहीं है। हालांकि, संकलक भी ठीक से काम कर रहा है; अगर मैं संकलन: उम्मीद के रूप में

(function(){ 
    var a; 
    a = 2; 
})(); 

:

a = 2 

इसके साथ एक फ़ाइल उत्पन्न करता है। तो दूसरे शब्दों में, कोड अच्छा है, संकलक अच्छा है, और फिर भी मुझे इस अप्रत्याशित 'पहचान' त्रुटि मिल रही है ... क्या कोई मुझे यह समझने में मदद कर सकता है कि क्या हो रहा है?

+0

हमेशा अपने कोड को http://coffeescript.org/#try में चिपकाने का प्रयास करें: यह देखने के लिए कि क्या नवीनतम कॉफीस्क्रिप्ट रिलीज में त्रुटि होती है। –

+0

मुझे पिछली पंक्ति में कुछ भूल जाने पर भी यही त्रुटि मिली है, इसलिए कोड को इंडेंट करने की उम्मीद नहीं है –

उत्तर

63

मुझे पूरा यकीन है कि यह एक टैब-बनाम-स्पेस मुद्दा है। अपने संपादक को बताएं कि रिक्त स्थान को टैब में कनवर्ट न करें अगर ऐसा होता है। साथ ही, कर्सर के साथ अपने कोड से गुज़रें और सुनिश्चित करें कि यह रिक्त क्षेत्रों पर कूद नहीं है।

समस्या यह है कि सामान्य संपादक दो या चार रिक्त स्थान के बराबर एक टैब देखते हैं, कॉफ़ीस्क्रिप्ट इसे एक स्थान के रूप में देखता है, इसलिए इंडेंटेशन गड़बड़ हो जाता है।

यदि यह सब मदद नहीं करता है, तो सुनिश्चित करें कि आपके पास हाल ही में कॉफ़ीस्क्रिप्ट संस्करण है, उदा। 1.1.0 या नया।

+2

मैंने अपने व्हाइटस्पेस को ट्रिपल-चेक किया है (ग्रहण के शो व्हाइटस्पेस वर्णों का उपयोग करके), और फिर से किया दोनों रिक्त स्थान और टैब के साथ; मुझे अभी भी वही सटीक त्रुटि मिलती है। एक नई कॉफ़ीस्क्रिप्ट होने के लिए, मुझे उबंटू पैकेज में जो भी संस्करण आता है ... ऐसा लगता है ... 0.7.0! यह मेरी समस्या हो सकती है, मुझे मैन्युअल रूप से कॉफी स्थापित करने का प्रयास करें और देखें कि क्या इससे मदद मिलती है। – machineghost

+0

यह दिखाता है कि उबंटू की पैकेजिंग और अद्यतन मॉडल मॉडल नोडजेएस और कॉफीस्क्रिप्ट जैसे क्षेत्रों में समस्याग्रस्त है जो इतनी तेजी से विकसित हो रहे हैं। मैं http://nodejs.org/download/ से नवीनतम स्थिर नोडजेएस स्थापित करने की सलाह देता हूं और फिर बस 'npm कॉफ़ी-स्क्रिप्ट इंस्टॉल करें' करता हूं। आईएमएचओ 'सुडो एपीटी-इंस्टॉलेशन का उपयोग करके जो कुछ भी नोड-मॉड्यूल' सीधे गलत लगता है; एनपीएम निश्चित रूप से काम के लिए बेहतर उपकरण है। क्या आप जानते थे कि क्रिसमस 2010.0 को कॉफीस्क्रिप्ट 1.0.0 जारी किया गया था? यह तीन साल पहले है। – flow

+0

धन्यवाद! मेरे लिए काम किया! – Prostakov

4

कोड ठीक है। सुनिश्चित करें कि आपने व्हाइटस्पेस को गड़बड़ नहीं किया है (अजीब नियंत्रण वर्ण रिक्त स्थान, टैब या इसी तरह के रूप में दिखाए जा रहे हैं)।

+1

धन्यवाद, लेकिन मैंने ग्रहण में सफेद जगहों को बदलने की कोशिश की और मैं देख सकता हूं कि वे वास्तव में रिक्त स्थान हैं। बस सुरक्षित होने के लिए मैंने रिक्त स्थान (दो प्रति इंडेंट स्तर) और टैब के साथ दोनों इंडेंटेशन को हटाने और बदलने की कोशिश की। सभी मामलों में मुझे एक ही त्रुटि मिलती है :-( – machineghost

+0

धन्यवाद, यह पता चला कि यह संस्करण था। @ * # $ @ और * #! पुरानी भंडार ... – machineghost

+0

@ माचिनघोस्ट: उन्होंने उल्लेख नहीं किया संस्करण। मैंने किया। :( – thejh

8

आप एक जेटब्रेन्स आईडीई (इंटेलीजे, PHPStorm, आदि) की स्थापना है कि मेरे लिए काम किया के परिवर्तन का उपयोग कर रहे हैं, तो यह है:

फ़ाइल> सेटिंग> परियोजना सेटिंग्स> संहिता शैली> CoffeeScript> टैब और मांगपत्र

टिक "का प्रयोग करें टैब वर्ण" & "स्मार्ट टैब"

+0

कोई कारण नहीं है कि मुझे टैब का उपयोग करने के लिए मजबूर होना चाहिए। मेरी त्रुटि को नीचे दिए गए कोड से गलत तरीके से इंडेंट किया गया है। – Lotus

+0

शब्द बदलने के लिए मजबूर होने की गलतफहमी से बचने के लिए यह सेटिंग – eaykin

0

आप एक ही समस्या है, लेकिन अपने खरोज ठीक है, तो
तो आपको bug 2868 से पीड़ित होना चाहिए।

असल में, त्रुटि भ्रामक है। इंडेंटेशन
त्रुटियों require डी फ़ाइलों में जांचें।

-1

आप इन दो तरीकों से को हल कर सकते हैं 1. यदि वेबस्टॉर्म का उपयोग कर फ़ाइल-> डिफ़ॉल्ट सेटिंग्स जैसा कि 2 से ऊपर बताया गया है।

Packages > Whitespace > Convert Tabs to Spaces: अन्य वैकल्पिक हल, उदात्त की तरह एक अलग संपादक का उपयोग करने के लिए, वहाँ यू पहले लाइन पर दर्ज दबा सकते हैं और यह रिक्त स्थान के साथ आप के लिए स्वत: टैब यह

0

जब एटम में आप स्वचालित रूप से टैब रिक्त स्थान को परिवर्तित कर सकते हैं जाएगा

संबंधित मुद्दे