2012-09-18 15 views
5

मुझे यकीन है कि इस प्रश्न को दस लाख बार पूछा गया है लेकिन मुझे अभी तक निम्न समस्या का कोई समाधान नहीं मिला है।iisnode और एक्सप्रेस

मेरे पास नोडज और एक्सप्रेस का उपयोग करके चल रहा एक मूल अनुप्रयोग है। जब मैं नोड में एप्लिकेशन चलाता हूं, तो यह डिफ़ॉल्ट रूप से मुझे मेरे सार्वजनिक फ़ोल्डर में index.html पर भेजता है। भले ही मेरे पास कोई मार्ग स्थापित न हो। मैं यह होना चाहता हूँ।

मैंने आईसनोड स्थापित किया है और 'डिवाइस' नामक 'डिफ़ॉल्ट वेबसाइट' के तहत एक नया एप्लिकेशन बनाया है। मैंने अपना आवेदन अपरिवर्तित रखा। आसपास पढ़ना मैं web.config के साथ कुछ सामान सुलझाने के लिए की जरूरत है और config यहाँ उल्लेख (नहीं YAML) के साथ जाने का फैसला किया:

http://tomasz.janczuk.org/2012/05/yaml-configuration-support-in-iisnode.html

जब मैं कोशिश करते हैं और अपने ब्राउज़र में एप्लिकेशन को लोड यह हमेशा मेरे app.js में मार्ग खोजने की कोशिश करता है और इस तरह के रूप में मुझ पर वापस संदेशों फेंकता है:

नहीं मिल सकता/उपकरणों/

मैं वास्तव में मेरे बाल इस एक साथ बाहर खींच रहा हूँ और नहीं पता है कि करने के लिए! क्या मुझे अपने app.js एंट्री पॉइंट के अंदर स्थिर सामग्री के लिए एक डिफ़ॉल्ट मार्ग सेट अप करना है? मैं जगह में निम्नलिखित है:

'http: // localhost/उपकरणों /' यह जड़ है जब मैं आवेदन लोड

app.configure(function(){ 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

लेकिन यह अभी भी मुझे सौंपने नहीं है index.html पर

कोई भी इस से मेरी सहायता करने में सक्षम है?

+0

पर पाया जा सकता है मैंने इसे किसी अन्य धागे पर उत्तर दिया है। [उत्तर] पर मेरा जवाब देखें (http://stackoverflow.com/a/31482232/2980607) – peteb

उत्तर

3

एक अच्छा सुझाव यहां पाया जा सकता है: Can an iisnode-hosted web application work out the virtual path at which it is hosted? अनिवार्य रूप से, आप इसे नियंत्रित करने के लिए पथ और पर्यावरण चर (यदि यह मौजूद है) को अमूर्त करने के लिए एक छोटे चर का उपयोग करते हैं। एक और अच्छी पोस्ट (संभवतः बेहतर समाधान) https://github.com/tjanczuk/iisnode/issues/160

5

इस समस्या को हल करने का सबसे आसान तरीका यह है कि आपके आईआईएस वेबसाइट के भीतर आईआईएस आवेदन बनाने के विरोध में आपके आवेदन के लिए एक समर्पित आईआईएस वेबसाइट तैयार करना है।

यदि आपके पास आईआईएस में आपके node.js एप्लिकेशन के लिए एक समर्पित वेबसाइट है, तो एप्लिकेशन यूआरएल स्पेस की जड़ पर पहुंच योग्य है, उदाहरण के लिए http://myapp.com/, जो डिफ़ॉल्ट एक्सप्रेस रूट कॉन्फ़िगरेशन की अपेक्षा करता है। इसके विपरीत, यदि आप अपने iode.js एप्लिकेशन को होस्ट करने के लिए आईआईएस वेबसाइट के भीतर आईआईएस एप्लीकेशन बनाते हैं (devices कहें), तो यह वेब साइट के रूट यूआरएल के अधीनस्थ यूआरएल पर पहुंच योग्य है। http://myapp.com/devices/। अतिरिक्त यूआरएल पथ खंड (devices) ऐसा कुछ है जो आपका एक्सप्रेस ऐप अपेक्षा नहीं करता है और प्रक्रिया के लिए कॉन्फ़िगर नहीं किया गया है, और इसलिए यह अनुरोध को अस्वीकार करता है।

यदि आप आईआईएस में आईआईएस अनुप्रयोग के रूप में node.js एप्लिकेशन को होस्ट करने का आग्रह करते हैं, तो आपको आईआईएस एप्लिकेशन नाम से मेल खाने वाले अतिरिक्त यूआरएल पथ सेगमेंट की अपेक्षा करने के लिए अपने एक्सप्रेस रूट कॉन्फ़िगरेशन को बढ़ाने की आवश्यकता होगी।

+0

मैं कम से कम इस मुद्दे का वर्णन करने के बाद से डाउनवोट नहीं करूंगा, लेकिन मैं ऊपर नहीं जाऊंगा क्योंकि उन सभी के लिए, आपने अभी भी किया है एक समाधान प्रदान नहीं करते हैं। आखिरकार, आवश्यक परिवर्तन (नीचे मेरा उत्तर देखें) ऐप को किसी भी पर्यावरण में अधिक मजबूत बनाने और आईआईएस में आभासी निर्देशिकाओं द्वारा लगाए गए मुद्दे को दूर करने के लिए काम करता है। – rainabba

+0

मैंने आपको अपरिवर्तित किया क्योंकि नोड ऐप को अपनी समर्पित वेबसाइट पर अलग करने से यह कम भ्रम पैदा करता है कि यूआरएल स्पेस की जड़ क्या है – Alexander

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