2015-07-11 12 views
19

मैं नोड के लिए बेहद नया हूं और ऐप मूल बातें के आसपास अपना सिर प्राप्त करने की कोशिश कर रहा हूं। मैं क्यों इन दोनों आदेशों के रूप में उत्सुक हूँ:एनपीएम प्रारंभ बनाम नोड app.js

नोड app.js

--vs--

NPM शुरू

उत्पादन एक ही बात कंसोल के लिए और "सुनना" जारी रखने के लिए प्रतीत होता है, लेकिन जब मैं http://localhost:3000 तक पहुंचने का प्रयास करता हूं तो मुझे पहली कमांड चलाने पर केवल 404 मिलते हैं।

मुझे लगता है कि एक्सप्रेस 4 में एक अलग ऐप संरचना है, लेकिन कंसोल में एक ही व्यवहार के बावजूद यह सफलतापूर्वक सुनता है और दूसरा नहीं है?

कोई स्पष्टीकरण सहायक है। धन्यवाद!

+3

'npm start' आपके package.json में 'स्टार्ट' स्क्रिप्ट में दिखता है। यह app.js. की तुलना में अलग स्क्रिप्ट हो सकता है Package.json में देखने का प्रयास करें। – hassansin

+0

क्या आप अपना app.js और अपने package.json के प्रासंगिक भाग को पोस्ट कर सकते हैं? –

+0

[प्रासंगिक लिंक] (https://docs.npmjs.com/misc/scripts) –

उत्तर

18

इनमें से दो आदेश आवश्यक नहीं हैं। npm start जो भी 'स्टार्ट' स्क्रिप्ट कॉन्फ़िगरेशन आपके 'package.json' में परिभाषित करने के लिए कहता है, node app.js 'node' में 'app.js' फ़ाइल निष्पादित करता है। अधिक जानकारी के लिए http://browsenpm.org/package.json देखें। तो यदि आपके पास निम्न पैकेज था। Json तो आदेश पूरी तरह से अलग हैं।

{ 
    "name": "my cool node project", 
    .... 
    "scripts": { 
     "start": "node index.js" 
    } 
    .... 
} 

निम्न पैकेज.जेसन वह है जो आप उन्हें समान बनाना चाहते हैं।

{ 
    "name": "my cool node project", 
    .... 
    "scripts": { 
     "start": "node app.js" 
    } 
    .... 
} 

मैं जाँच क्या 'स्टार्ट' स्क्रिप्ट चलाने और अपने CLI में बजाय NPM के माध्यम से सीधे ही आदेश चलाकर देखने के लिए जहां अंतर नहीं है की कोशिश करने के लिए निर्धारित है द्वारा शुरू कर दूं।

लेकिन क्यों यह है कि एक सफलतापूर्वक सुनता है और अन्य

सर्वर 404 इस सुझाव है कि सर्वर सुन रहा है लौटा रहा है यदि नहीं करता है, लेकिन या तो दस्तावेज़ जड़ या पहुँच अनुमतियाँ नहीं हैं ठीक से सेटअप नहीं किया जा रहा है, इसलिए यह 'फ़ाइल नहीं मिली' प्रतिक्रिया देता है।

+3

पता है कि, आप सही हैं। आखिर में मैंने इसे समझ लिया, मैं थोड़ा विचलित था क्योंकि मैं बहुत अधिक गड़बड़ी का उपयोग करने के लिए एफई स्वचालन दुनिया से आ रहा हूं। असल में, ./bin/www फ़ाइल अब सर्वर के लिए बूटस्ट्रैपर है जो एक्सप्रेस के पुराने संस्करणों में मामला नहीं था। मुझे समझने में मदद के लिए धन्यवाद। असल में मैं समझता हूं कि app.js पूरी तरह से एप्लिकेशन को बूटस्ट्रैप नहीं करता है लेकिन यह मोंगोड कनेक्शन जैसे चीजें कर रहा था, यही कारण है कि मैं अपने कंसोल लॉग देख रहा था। नया एक्सप्रेस मानक सभी बूटस्ट्रैपिंग (जो मुझे पसंद है, यह क्लीनर लगता है) करने के लिए ./bin/www का उपयोग कर रहा है। +1 धन्यवाद !! – dudewad

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