मेरे पास एक नोडजेएस मॉड्यूल है जिसे एक्सएसएल फ़ाइल के माध्यम से एक्सएमएल से एचटीएमएल में अनुवाद करना है। समस्या यह है कि मुझे शेष मॉड्यूल के साथ एक्सएसएल को बंडल करने की आवश्यकता है।

अभी यह स्रोत फ़ोल्डर के अंदर है और मैं इसके माध्यम से इसका उपयोग करता हूं:

function createHtml(xml) {
    const fs = require('fs');
    const xsltProcessor = require('xslt-processor');

    var xsl = fs.readFileSync('./src/xsl/html-export.xsl', 'utf-8');
    return xsltProcessor.xsltProcess(xsltProcessor.xmlParse(xml), xsltProcessor.xmlParse(xsl));
}

बेशक मैंने इस फ़ोल्डर को package.json की files प्रॉपर्टी में रखना सुनिश्चित किया है:

    "files": [
        "src"
    ],

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

यह वास्तव में मेरे लिए काम नहीं कर रहा है। मैं जावास्क्रिप्ट स्रोत फ़ाइल से संबंधित फ़ाइल तक पहुंचना चाहता हूं, न कि वर्तमान नोडजेएस एप्लिकेशन।

मैंने एक अलग तरह के पथ का उपयोग करने की कोशिश की (html-export.xsl, ./html-export.xsl, ./xsl/html-export.xsl< /em>) लेकिन मॉड्यूल के अंदर भी कुछ और काम नहीं करता है। इसलिए मैं इसे कहीं और आज़माने के लिए प्रकाशित नहीं कर सकता।

अच्छी खबर यह है: XSL फ़ाइल वास्तव में प्रकाशन के दौरान मॉड्यूल के अंदर शामिल होती है; जब मैं इसे स्थापित करता हूं तो नोड&लोबार;मॉड्यूल/ फ़ोल्डर में मॉड्यूल में XSL होता है। तो यह उपरोक्त कोड "सिर्फ" है जो काम नहीं कर रहा है, क्योंकि पथ दूसरे मॉड्यूल (यानी require के साथ) के सापेक्ष हल किया गया है, मूल के सापेक्ष नहीं (यानी के अंदर वाला) नोड&लोबार;मॉड्यूल/)।

मैं नोडजेएस में संपत्तियों को कैसे संभाल सकता हूं ताकि वे उस मॉड्यूल के साथ बंडल हो जाएं जिससे वे संबंधित हैं?

यह प्रश्न संबंधित लगता है, लेकिन इसका उत्तर ठीक वही है जो मैं किया, और यह किसी कारण से मेरे लिए काम नहीं करता है।

0
Steffi S. 14 सितंबर 2019, 17:57

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा प्रतीत होता है कि आप केवल अपने पैकेज में आंतरिक रूप से .xsl फ़ाइल का उपयोग करना चाहते हैं, जो कि कुछ ऐसा है जिसे मैंने मूल रूप से गलत समझा था।

इसे पूरा करने के लिए, आप अपनी .xsl फ़ाइल के पथ को हल करने के लिए path पैकेज का उपयोग कर सकते हैं।

इसे पसंद करें:

function createHtml(xml) {
    const fs = require('fs');
    const path = require('path');
    const xsltProcessor = require('xslt-processor');

    var xsl = fs.readFileSync(path.resolve(__dirname, './src/xsl/html-export.xsl'), 'utf-8');
    return xsltProcessor.xsltProcess(xsltProcessor.xmlParse(xml), xsltProcessor.xmlParse(xsl));
}

यह कैसे करना है यह प्रदर्शित करने के लिए, मैंने आपके लिए समीक्षा करने के लिए एक उदाहरण एनपीएम पैकेज बनाया है। हालांकि यह पैकेज एक .xsl फ़ाइल का उपयोग नहीं करता है, यह एक .txt फ़ाइल का उपयोग करता है - तर्क वही रहता है।

पैकेज के भीतर रीडमी फ़ाइल में इसका उपयोग करने के निर्देश हैं।

आप एनपीएम पर पैकेज यहां पा सकते हैं

आप यहां पैकेज का स्रोत कोड पा सकते हैं

2
Matt Oestreich 14 सितंबर 2019, 18:30