2013-07-30 14 views
9

नहीं पढ़ सकता है, मैं अपने नोड पैकेज निर्भरताओं को प्रबंधित करने की कोशिश कर रहा हूं। मैं एक कमांड चलाकर सभी आवश्यक निर्भरताओं को स्थापित करने में सक्षम होना चाहता हूं, और जो मैंने पढ़ा है, उससे प्राप्त करने का एक तरीका package.json फ़ाइल का उपयोग कर रहा है और npm install चला रहा है। तो मेरी JSON फ़ाइल इस तरह दिखता है:एनपीएम इंस्टॉल पैकेज.जेसन

{ 
"name": "Name-Of-The-Thing", 
"description": "The Thing's Name", 
"author": "The Dude <[email protected]>", 
"dependencies": { 
     "mocha":">= 1.12.0", 
     "mocha-phantomjs":">= 3.1.0", 
     "chai":">= 1.7.2", 
     "phantomjs":">= 1.9.1" 
} 
} 

हालांकि npm install रिपोर्ट निम्न त्रुटि:

npm ERR! Failed to parse json 
npm ERR! Unexpected token ? 
npm ERR! File: C:\Path\To\The\Thing\package.json 
npm ERR! Failed to parse package.json data. 
npm ERR! package.json must be actual JSON, not just JavaScript. 
npm ERR! 
npm ERR! This is not a bug in npm. 
npm ERR! Tell the package author to fix their package.json file. JSON.parse 

npm ERR! System Windows_NT 6.2.9200 
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "test" 
npm ERR! cwd C:\Path\To\The\Thing 
npm ERR! node -v v0.8.15 
npm ERR! npm -v 1.1.66 
npm ERR! file C:\Path\To\The\Thing\package.json 
npm ERR! code EJSONPARSE 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  C:\Path\To\The\Thing\npm-debug.log 
npm ERR! not ok code 0 

किसी को भी पता है क्यों?

+0

यह विशेष पैकेज.जेसन मेरे लिए ठीक काम कर रहा है। –

+0

@MerynStol यह कमाल है। यह जानकर खुशी हुई कि यह वास्तव में सरल है। शायद यह एक मंच मुद्दा है। मैं विंडोज 8 पर उस कमांड को चला रहा हूं, और 64 बिट आर्किटेक्चर – Ceilingfish

+1

"अप्रत्याशित टोकन" को देखते हुए? त्रुटि, शायद जेसन फ़ाइल में कुछ अजीब (अदृश्य) चरित्र है। हो सकता है कि अलग-अलग पाठ संपादक, या अपने संपादक की सेटिंग्स के साथ बेवकूफ कोशिश करें। फिर package.json फ़ाइल को पुन: सहेजें। मैं हर जगह यूटीएफ -8 का उपयोग करता हूं। –

उत्तर

13

उचित जवाब:

आपका संपादक JSON फ़ाइल है, जो गलत JSON टेक्स्ट ओकटेट-स्ट्रीम बनाता है एक बाइट आदेश-मार्क कहते हैं।

JSON RFC का कहना है:

JSON text SHALL be encoded in Unicode. The default encoding is UTF-8.

Since the first two characters of a JSON text will always be ASCII characters [RFC0020], it is possible to determine whether an octet stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking at the pattern of nulls in the first four octets.

 00 00 00 xx UTF-32BE 
     00 xx 00 xx UTF-16BE 
     xx 00 00 00 UTF-32LE 
     xx 00 xx 00 UTF-16LE 
     xx xx xx xx UTF-8 

bug report आप का उल्लेख इस कारण के लिए बंद कर दिया गया।

मेरी समझ से, कोई वैध ASCII एन्कोडेड टेक्स्ट भी वैध यूटीएफ -8 होता है, इसलिए बीओएम की अनुपस्थिति के साथ यह बताता है कि यह अब अपेक्षित क्यों काम करता है।

सामान्यतः, मुझे लगता है कि आपको बाइट-ऑर्डर-मार्क के बिना यूटीएफ -8 में फ़ाइलों को सहेजने के लिए अपना टेक्स्ट एडिटर सेट अप करना चाहिए। चर्चा के लिए What's different between UTF-8 and UTF-8 without BOM? देखें। प्रति What encoding is expected for Node.js source code?, Node.js इस तरह से एन्कोड किए गए जेएस स्रोत फ़ाइलों में गैर-ASCII वर्ण स्वीकार करेगा। जब आप स्रोत कोड में कहीं भी गैर-ASCII स्ट्रिंग एम्बेड करना चाहते हैं तो यह आसान हो सकता है।

+0

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

+1

@Ceilingfish शायद यहां पोस्ट किए गए समाधानों में से एक काम करता है? http://stackoverflow.com/questions/5406172/utf-8-without-bom –

+0

भगवान जानता है क्यों, लेकिन मेरे मामले में, जब मैंने बीओएम के साथ बचाया, तो यह काम किया। अन्यथा यह JSON पार्स करने में विफल रहा। मैं शानदार पाठ 2 का उपयोग कर रहा हूँ। –

1

एकमात्र समाधान निर्भरताओं के सटीक संस्करण को निर्दिष्ट करना है। एनपीएम कभी-कभी पहचान नहीं करता है> या .x

1

npm ERR! Unexpected token ?

यदि कोई बीओएम नहीं है, तो यह भी जांचें कि क्या आपके पास "?" है फ़ाइल या अन्य त्रुटियों में कहीं, उदा। एक लापता या अतिरिक्त ","।

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