2017-07-24 10 views
6

मैंने एक नोडज साझा लाइब्रेरी बनाई और अब मैं इसे तैनात करने के लिए इसे पैकेज करना चाहता हूं। मैं वेबपैक के लिए एंजुलर 2 एप्लिकेशन पैक किए गए धन्यवाद के साथ इसका उपयोग करने में सक्षम होना चाहता हूं।पैकेजिंग एक नोडज सी ++ साझा lib

साझा lib एक फ़ोल्डर निर्माण/रिलीज में स्थित है।

वेबपैक में इसे अच्छी तरह से पैकेज करने के लिए कैसे आगे बढ़ना है? या यह एक विशेष पैकेज है। जेसन घोषणा?

NodeJS प्रलेखन पर एक नज़र होने, dll नाम एक्सटेंशन का उपयोग कर रहे हैं .node (https://nodejs.org/api/addons.html#addons_loading_addons_using_require)

webpack नोड-लोडर मदद मिल सकती है? https://webpack.js.org/loaders/node-loader/

मैं सर्वर साइड प्रतिपादन का उपयोग करूंगा, अन्यथा यह संभव नहीं होगा।

सादर, Steph

+0

क्या आपका मतलब है कि आप इसे ब्राउज़र के अंदर चलाने के लिए चाहते हैं? यह संभव नहीं होगा। – robertklep

+0

यह संभव है। आपको इसे सर्वर की तरफ चलाने की ज़रूरत है। कुछ हार्डवेयर डेटा तक पहुंचने के लिए बहुत उपयोगी है। – sancelot

+2

यही कारण है कि मैंने पूछा कि क्या आप इसे ब्राउज़र में चलाने के लिए चाहते हैं, बशर्ते आपने अपना प्रश्न _angular_ के साथ टैग किया हो। फिर भी, मुझे नहीं लगता कि वेबपैक देशी एडॉन्स को बंडल कर सकता है। – robertklep

उत्तर

0

नहीं, आप नहीं कर सकते हैं। क्योंकि सी/सी ++ एडॉन्स मूल बाइनरी कोड हैं जो गतिशील रूप से केवल एक नोड सर्वर से जुड़े हो सकते हैं।

आप सुरक्षा विचारों के लिए ब्राउज़र पर जावास्क्रिप्ट से किसी मूल बाइनरी कोड को निष्पादित नहीं कर सकते हैं और क्योंकि मूल बाइनरी आमतौर पर एक विशिष्ट आर्किटेक्चर/ओएस को लक्षित करने के लिए संकलित किया जाता है।

यदि आप ब्राउज़र पर मूल कोड निष्पादित करने का आग्रह करते हैं तो क्रोम मूल क्लाइंट प्रोजेक्ट (NaCI): https://developer.chrome.com/native-client देखें।

+0

हां, जैसा कि मैंने टिप्पणी में लिखा था, मैं सर्वर साइड प्रतिपादन का उपयोग करूंगा। जेएस कोड सर्वर पक्ष पर निष्पादित किया गया है, और एचटीएमएल प्रस्तुत कोड ब्राउज़र को भेजा गया है। – sancelot

+0

मैं @etsus से सहमत हैं, और मैं के बीच कोई सीधा संबंध नहीं दिख रहा है: - पहले: एक Node.js ऐड-ऑन NPM के माध्यम से स्थापित किया जा सकता है जो स्थापित करने और नोड सर्वर केवल द्वारा प्रयोग की जाने नोड ढकोसला साथ संकलित। - और दूसरा: वेबपैक जो आपको ब्राउज़र में उपयोग के लिए कोणीय ऐप फ़ाइलों को बंडल करता है। कोणीय आपके नोड सर्वर पर एक एपीआई के साथ बातचीत कर सकता है जो बदले में किसी भी मॉड्यूल या पुस्तकालय का उपयोग कर सकता है भले ही इसमें देशी बाइनरी फ़ाइलें शामिल हों। समझ में आओ? यदि नहीं, तो आप जो हासिल करने की कोशिश कर रहे हैं उसके बारे में अधिक जानकारी प्रदान करें। –

+0

मॉड्यूल नोड-जीपीपी लोड/नोडजेस के साथ चलाता है, कोई समस्या नहीं है। वेबपैक ऐप को ठीक से बंडल करता है। यह जिस तरह से आप चाहते हैं उसे बंडल करता है। प्रोजेक्ट के इस हिस्से के लिए कोणीय/सार्वभौमिक का उपयोग कर मेरे मामले में सर्वर पक्ष प्रतिपादन। मेरी नोडेक ++ लाइब्रेरी सीएनसी मशीन (रोबोटिक्स) के कुछ हार्डवेयर डेटा की सीधी पहुंच की अनुमति देती है। मैं समझता हूं कि मैं एक समान सेवा बनाने के लिए एक webservice और xhr अनुरोध का उपयोग कर सकता हूं, लेकिन यह वही तरीका नहीं है जिस तरह से हम चाहते हैं .. तकनीक के बारे में सबकुछ जो मैं करना चाहता हूं उसे अनुमति देता है। इस समय एकमात्र "अवरुद्ध" कारण वेबपैक फ़ाइल को ढूंढने और पैक करने में असमर्थ लगता है। – sancelot

1

नोड-लोडर या नोड-देशी-लोडर का उपयोग करके, यह नोड मॉड्यूल लोड नहीं करना चाहता है। मॉड्यूल './control.node' नहीं मिली: webpack.config.js में, मैं अगले नियमों को शामिल किया है:

"rules": [ 
    { 
    "test": /\.node$/, 
    "loader": "node-native-loader?from=app" 
    }, 

परिणामों में।

+0

मेरी समस्या लोडर से नहीं आती है, मैंने लोडर कोड पढ़ा है, लोडर का उपयोग कोड निष्पादित करते समय किया जाता है, न कि बंडल बनाते समय। ऐसा लगता है कि मेरी .node फ़ाइल बंडल नहीं है। तो वेबपैक में एक विशिष्ट लक्ष्य mlust जोड़ा जाना चाहिए? – sancelot

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