2016-03-10 8 views
14

मेरे पास सरल मार्गों वाला एक ऐप है। जब मैं वेबपैक विकास सर्वर का उपयोग करता हूं तो यह ठीक काम करता है। अब, मैं इसे अपने उत्पादन सर्वर पर तैनात करना चाहता हूं। तो मैंने bundle.js बनाया। हालांकि, मुझे यकीन नहीं है कि सर्वर पर फ़ाइल की सेवा करने का सही तरीका क्या है।वेबपैक द्वारा निर्मित उत्पादन प्रतिक्रिया bundle.js की सेवा करने का सही तरीका क्या है?

अधिकांश ब्लॉग पोस्ट इमारत bundle.js में बंद हो या Heroku या nodejutsu करने के लिए इसे तैनात। अगर मैं इसे अपने सर्वर पर सेवा देना चाहता हूं तो मुझे क्या करना चाहिए?

मैं एक्सप्रेस सर्वर पर फ़ाइल की सेवा करने की कोशिश की, लेकिन मैं (यह वही मार्ग webpack-देव-सर्वर के साथ ठीक काम करता है) ब्राउज़र में इस त्रुटि हो रही है।
http://localhost:3000/app
नहीं मिल सकता/एप्लिकेशन

मैं इस तरह सरल मार्ग है। लैंडिंग पृष्ठ पर/ठीक काम करता है, लेकिन मैं एक्सेस नहीं कर सकता/एप रूट

var Routes =() => (
    <Router history={browserHistory}> 
     <Route path="/" component={Landing}> 
     </Route> 
     <Route path="/app" component={App}> 
     </Route> 
    </Router> 
) 

यहां मेरा server.js है। मैं ./public

app.use(express.static('./public')); 
app.listen(port, function() { 
    console.log('Server running on port ' + port); 
}); 

उत्तर

12

में bundle.js शब्दों में कहें, index.html आप अपने एक्सप्रेस सर्वर है कि सभी पृष्ठ अनुरोधों को दर्शाता है और उन्हें ग्राहक को निर्देशित करता है पर एक "सभी पकड़ने" मार्ग घोषित करने के लिए की जरूरत है। सबसे पहले, सुनिश्चित करें कि आप अपने सर्वर पर path मॉड्यूल सहित रहे हैं: फिर

var path = require('path'); 

, app.listen से पहले इस डाल:

app.get('*', function(req, res) { 
    res.sendFile(path.resolve(__dirname, 'public/index.html')); 
}); 

इसका मतलब यह है कि आप एक स्क्रिप्ट टैग के माध्यम से index.html में bundle.js डालने कर रहे हैं।

+0

धन्यवाद, पूरी तरह से काम करता है! आपके समाधान में एक मामूली टाइपो मिला: यह res.sendFile (path.resolve (__ dirname', ''public/index.html') होना चाहिए; –

+0

बढ़िया! यह भी ध्यान देने के लिए धन्यवाद, मैंने जवाब संपादित किया है। –

+0

लेकिन क्या होगा यदि मेरा वेबपैक आउटपुट './dist/bundle.js' पर है, जबकि मेरा अनबंडल कोड और index.html './ublic' में है? मुझे प्रोड में क्या करने की ज़रूरत है? मेरा एक्सप्रेस सर्वर 'सार्वजनिक' से स्थिर फाइलों को प्रस्तुत करता है .. लेकिन index.html संदर्भ स्क्रिप्ट 'dist/bundle.js' पर है - इसे वापस नहीं पहुंचा सकता .... (यह वेबपैक के देव सर्वर के साथ ठीक काम करता है) –

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