2012-05-10 9 views
6

मैंने देखा है कि एनपीएम (उदा। nerve, "माइक्रो-फ्रेमवर्क") के साथ स्थापित करने के लिए प्रतीत होता है कि सरल नोड पैकेज प्राप्त करने की कोशिश में) मैं अक्सर निर्भरता दर्द के कुछ रूप में चलाता हूं। कुछ खोदने के बाद, मैंने bcrypt मॉड्यूल के तंत्रिका के साथ समस्या को ट्रैक किया, जिसे स्पष्ट रूप से सी/सी ++ में लिखा गया है और पैकेज प्रबंधक इसे डाउनलोड करने के बाद संकलित किया जाना है।नोड.जेएस/एनपीएम - वैसे भी यह बताने के लिए कि क्या पैकेज शुद्ध जेएस है या नहीं?

दुर्भाग्य से, ऐसा लगता है कि आप इसे विंडोज पर काम करना चाहते हैं, तो जवाब है (बीसीआरपी मुद्दों में से एक थ्रेड से) "एक लिनक्स वीएम स्थापित करें"। तो आज पहले मैंने ऐसा किया था, और अन्य निर्भरताओं में चलना शुरू कर दिया था (जीसीसी स्थापित होने के बावजूद, आप निर्माण के बारे में सोचने से पहले certain unnamed apt packages स्थापित कर सकते हैं), फिर अंत में एक और सी कंपाइलर त्रुटि देखने के बाद (कुछ पैकेज या अन्य के बारे में नहीं मुझे लगता है कि "Arrays.c" खोजने में सक्षम), मैंने वास्तव में छोड़ दिया, और इसके बजाय तंत्रिका से स्विच करने के लिए स्विच किया। विडंबना यह है कि बड़े और अधिक जटिल एक्सप्रेस एक ही मुद्दे के बिना लिनक्स और विंडोज पर एनपीएम के साथ स्थापित करते हैं।

तो, मेरा प्रश्न है: क्या कोई फ़िल्टर/निर्भरता ट्रैकिंग उपलब्ध है जो आपको यह देखने देती है कि पैकेज में नोड कोर के अलावा अतिरिक्त निर्भरताएं हैं या नहीं? क्योंकि मेरे लिए नोड का आकर्षण "जावास्क्रिप्ट में सबकुछ" है, और इस तरह की चीजें भ्रम को काफी हद तक दूर करती हैं। वास्तव में, सी/सी ++ के साथ काम करने के अपने समय से अधिक करने के बावजूद, जब भी मुझे इन दिनों कुछ "बनाने" की आवश्यकता दिखाई देती है तो मैं आम तौर पर दूसरी दिशा में चिल्लाती हूं। :)

+1

मुझे आपके दर्द डेव महसूस होता है, लेकिन कुछ बार हमें ऑप्टिमाइज़ेशन और संसाधन मांगों से सी/सी ++ पर मजबूर होना पड़ता है।कुछ देशी नोड मॉड्यूल पर काम कर रहा है और कुछ भी दोहरा सकते हैं और उचित निर्भरता का उपयोग नहीं करने की कोशिश कर के बाद, मैं कई मुद्दों आई है। शायद सबसे तर्कसंगत नोड मॉड्यूल वे हैं जो मूल कोड को कॉल या निष्पादित करते हैं क्योंकि संकलन और इसके साथ लिंक करने के विपरीत। –

उत्तर

4

पैकेज.जेसन में "स्क्रिप्ट" फ़ील्ड के लिए देखें।

ऐसा

"scripts": { 
    "install": "make build", 
} 

कुछ और रूट निर्देशिका में एक Makefile करता है, तो एक अच्छी संभावना है कि पैकेज कुछ देशी मॉड्यूल जो संकलित और निर्मित करना होगा है है। कई पैकेजों में केवल मेकफ़ाइल परीक्षणों को संकलित करने के लिए शामिल है।

पैकेज दस्तावेजों पर यह जांच संभावना को बाहर नहीं रखती है कि कुछ निर्भरता को संकलित और बनाया जाना होगा। इसका मतलब पैकेज.जेसन, उनकी निर्भरताओं आदि में प्रत्येक निर्भरता के लिए इस प्रक्रिया को दोहराना होगा।

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

लिनक्स वीएम का उपयोग करना सबसे अच्छा विकल्प प्रतीत होता है। Developing Node.js applications on Window आपको वीएम, नोड.जेएस और एक्सप्रेस स्थापित करने के चरण-दर-चरण निर्देश देता है।

2

नोड "सब कुछ जावास्क्रिप्ट" नहीं है, क्योंकि नोड कोर का विस्तार करने का एक तरीका सी/सी ++ प्लगइन लिखना है।

तो नोड वी 8 का उपयोग कर सी/सी ++ मॉड्यूल के आसपास एक जावास्क्रिप्ट रैपर अधिक है।

उदाहरण के लिए शुद्ध जावास्क्रिप्ट में कुशल डेटाबेस ड्राइवर कैसे लिख सकते हैं? यह संभव होगा लेकिन धीमा होगा। फिल्टर के लिए

, यह उनके पैकेज को दस्तावेज करने के लिए लेखक पर निर्भर है। कोई स्वचालित फ़िल्टर नहीं है।

+1

आप https://github.com/felixge/node-mysql की तरह मतलब है? – Dave

+0

जैसा कि मैंने कहा यह संभव है (शुद्ध js डेटाबेस ड्राइवरों लेखन), लेकिन आप वास्तव में पैकेज का परीक्षण किया? मैंने किया । https://github.com/Sannis/node-mysql-bindings-benchmarks/wiki यह https://github.com/sidorares/ की तरह दिखता है: – mpm

+3

मैं सिर्फ libmysql एक साथ शुद्ध जे एस कार्यान्वयन की तुलना इस बेंचमार्क पेज पाया है nodejs-mysql-native जितना तेज़ है जितना कि mysql lib से लिंक होता है। यह मुझे बिल्कुल भी आश्चर्य नहीं है - निश्चित रूप से बाधाओं इस सामान के लिए नेटवर्क और डेटाबेस CPU/मैं/हे, नहीं ग्राहक ही हो जाएगा? – Dave

7

पहला समाधान आपको नहीं बताता है कि निर्भरता पैकेज को अशुद्ध करती है या नहीं। जीईपी जेनरेट आउटपुट की खोज करने के लिए बहुत बेहतर:

find node_modules/ | grep binding.gyp || echo pure 
+0

हाँ, यह एक जवाब प्रदान करता है और इस मामले में यह पहले उत्तर के विपरीत भी सही है। आप "मेक बिल्ड" से क्या नहीं कह सकते हैं जो करता है। यह ऐसी चीज बना सकता है जो शुद्ध लिपि नहीं है, लेकिन ऐसा नहीं हो सकता है। और वह जवाब भी किसी भी निर्भरता की जांच नहीं करता है। एकमात्र सही उत्तर नोड-जीईपी के किसी भी सबूत की खोज करना है, जो अशुद्ध होने वाली किसी भी चीज को बनाना है। –

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

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