किसी फ़ाइल को बदलने पर नोड को पुनरारंभ करें


172

किसी व्यक्ति के लिए जो PHP की पृष्ठभूमि से आ रहा है और नोड को मारने और हर कोड परिवर्तन के बाद इसे फिर से शुरू करने की प्रक्रिया बहुत थकाऊ लगती है। कोड परिवर्तन सहेजे जाने पर नोड को स्वचालित रूप से पुनरारंभ करने के लिए स्क्रिप्ट के साथ शुरू करने पर क्या कोई झंडा है?

जवाबों:


94

हमेशा के लिए मॉड्यूल में कई नोड.जेएस सर्वर की अवधारणा होती है, और वर्तमान में चल रहे सर्वर को फिर से शुरू, फिर से शुरू और बंद कर सकते हैं। यह आवश्यकतानुसार फाइलें बदलने और नोड को पुनरारंभ करने के लिए भी देख सकता है।

यदि आपके पास पहले से यह नहीं है तो इसे स्थापित करें:

npm install forever -g

इसे स्थापित करने के बाद, foreverकमांड को कॉल करें : -wपरिवर्तनों के लिए फ़ाइल देखने के लिए ध्वज का उपयोग करें :

forever -w ./my-script.js

इसके अलावा, आप निर्देशिका देख सकते हैं और पैटर्न को अनदेखा कर सकते हैं:

forever --watch --watchDirectory ./path/to/dir --watchIgnore *.log ./start/file

+1 हमेशा विकास / परीक्षण और उत्पादन दोनों के लिए बहुत बहुमुखी है।
smertrios

1
मैंने इस कमांड के साथ अपने ES2015 Expess.js / Webpack सर्वर को पुनः आरंभ करने के लिए हमेशा के लिए उपयोग करने की कोशिश की है, forever -c babel-node -w --watchDirectory ./server ./server/index.js लेकिन दुख की बात यह है कि यह हमेशा के लिए एक टेलस्पिन में भेजता है और यह सर्वर को बहुत बार पुनरारंभ करता है, जिसके परिणामस्वरूप पोर्ट पहले से ही त्रुटियों में है ... क्या कोई है पुनः आरंभ करने के बाद एक ठहराव जोड़ें?
ब्रायन डि पाल्मा

1
@BriDiPalma आपको वॉच डायरेक्टरी के तहत लॉग्स जैसी कोई भी बदलती हुई फाइलें, अगर आपको कुछ इग्नोर करना चाहिए, तो जोड़ना चाहिए। यह देखने के लिए डॉक्स देखें कि क्या आप पुनरारंभ के बीच देरी को परिभाषित कर सकते हैं।
हाइड

1
@ यह एक देरी नहीं थी कि यह आवश्यक था -tया killTreeवह विकल्प था जो आवश्यक था, मुझे लगता है कि बेबल-नोड को मार दिया जा रहा था लेकिन यह व्यक्त नहीं किया गया एक्सप्रेस सर्वर।
ब्रायन डि पाल्मा

2
फॉरएवर जेएस के पास विंडोज में एक बग है जो स्क्रिप्ट समाप्त होने पर नोड प्रक्रिया को नहीं मारता है। मैन्युअल रूप से नोड प्रक्रिया को मारने के लिए है :( stackoverflow.com/questions/14556852/…
pmont

157

एक अच्छा विकल्प नोड-सुपरवाइज़र और Node.js है फ़ाइल बदलें पर पुनरारंभ करें इसका उपयोग करने के तरीके पर अच्छा लेख है, आमतौर पर:

 npm install supervisor -g

और आपके आवेदन के मूल में माइग्रेट करने के बाद निम्नलिखित का उपयोग करें

 supervisor app.js

यहाँ भी, जो भी कारण के लिए, जैसा कि मैंने बिना किसी मुद्दे के पहले नीम का उपयोग किया था।
ज़ेनमास्टर

1
मेरे लिए भी काम किया। मुझे डिफ़ॉल्ट वाइल्डकार्ड घड़ी पैरामीटर को ओवरराइड करना पड़ा server.jsक्योंकि यह लगातार पुनरारंभ हो रहा था, यह मेरे सर्वर को क्लाइंट को बूट पर बनाने और इस प्रकार फाइलों को बदलने के कारण था। supervisor --watch server.js server.jsउसे हल कर लिया।
scipilot

2
नोड-पर्यवेक्षक किसी भी अधिक बनाए नहीं रखा जाता है।
एलेंग

एक जादू की तरह काम करता है!!
जेचर्ड्सज़

फ़ाइल को संशोधित किया गया है या नहीं यह जाँचने के लिए मेरा पसंदीदा एक, ताज़ा अंतराल!
NiCk Newman

100

आपको नादान की तरह कुछ देखना चाहिए ।

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

उदाहरण:

nodemon ./server.js localhost 8080

या केवल

nodemon server

किसी भी विचार क्यों कोड परिवर्तन को लागू करने के लिए नोड की आवश्यकता होती है? और अन्य सर्वर (जैसे Apache / PHP) को पुनः आरंभ करने की आवश्यकता क्यों नहीं है?
मैवरिक

2
@ dk49 क्योंकि उस मामले में PHP स्क्रिप्ट हर आने वाले अनुरोध के लिए शुरू की जाती है, और पेज बनाने के बाद बंद हो जाती है।
22

@Daerdemandt को साझा करने के लिए धन्यवाद..लेकिन मुझे अभी भी नहीं मिला कि सर्वर (किसी भी मंच पर) को शुरू करने और बंद करने की आवश्यकता क्यों है? क्या यह इसलिए है क्योंकि यह फाइलों (प्रतिक्रियाओं) का कैश रखता है? मैंने सोचा था कि सर्वर अनुरोध के समय डिस्क से फाइल लोड कर रहा होगा, इसे प्रोसेस करेगा और फिर प्रतिक्रिया भेजेगा। मैं सर्वर-साइड प्रोग्रामिंग के लिए नया हूं।
मवरिक

क्या आप प्रोडक्शन के माहौल में नोडमॉन का इस्तेमाल कर सकते हैं?
जोटी

1
यह निश्चित नहीं है कि नोडोमन आज भी कैसा है (जैसा कि यह 2012 में वापस आ गया था), लेकिन सुरक्षा कारणों से मुझे यकीन नहीं है कि मैं चाहता हूं कि जब भी कोई फ़ाइल बदलेगा तो मैं अपने सर्वर को फिर से चालू करूं। उत्पादन वातावरण के लिए pm2 जैसा कुछ अधिक उपयुक्त हो सकता है।
मेन्सट्रुअल

43

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

विकास के लिए

उत्पादन के लिए (विस्तारित कार्यक्षमता जैसे क्लस्टरिंग, रिमोट तैनाती आदि)

फॉरएवर, पीएम 2 और स्ट्रॉन्ग्लूप के बीच तुलना स्ट्रांगलोप की वेबसाइट पर पाई जा सकती है ।


3
@ 2019 नोडम केवल 4 विकास-विकल्पों में से एक है जो अभी भी बनाए रखा गया है।
मावरमंद

1
@mvermand हाँ, हाल ही में उनमें से किसी एक को छोड़कर कोई नई रिलीज़ नहीं हुई है। उत्पादन के लिए, PM2 अभी भी अच्छी तरह से बनाए रखा है।
Kay

16

आप नोडमोन भी आजमा सकते हैं

Nodemon स्थापित करने के लिए

npm install -g nodemon

Nodemon का उपयोग करने के लिए

आम तौर पर हम नोड प्रोग्राम शुरू करते हैं जैसे:

node server.js

लेकिन यहाँ आपको ऐसा करना होगा:

nodemon server.js

अच्छा और सरल aswer !!
lesimoes

1
नोडम में कष्टप्रद कीड़े होते हैं। यह मेरे लिए एक समय नुक़सान था।
kta

यह उत्तर 2012 नोडम उत्तर से कैसे अलग है ?
Dan Dascalescu

9

नोड देव

नोड-डेव्लोडर डेवलपर्स के लिए नोडम और सुपरवाइजर दोनों के लिए बहुत अच्छा विकल्प है, जो जब भी सर्वर रिस्टार्ट होता है या फाइल में कोई त्रुटि या बदलाव होता है , तो अपने डेस्कटॉप पर ग्रोनल (या लीबनेटाइज) सूचनाएं प्राप्त करना पसंद करता है।

स्थापना:

npm install -g node-dev

नोड के बजाय नोड-देव का उपयोग करें:

node-dev app.js

फ़ाइल बदलने की सूचना तो सर्वर अपने आप शुरू हो जाती है

यहां छवि विवरण दर्ज करें

सांत्वना देना

यहां छवि विवरण दर्ज करें


3

मैं इस runjsतरह का उपयोग करता हूं :

runjs example.js

पैकेज को बस कहा जाता है run

npm install -g run

2
यह बेहतर नहीं है, बस एक और विकल्प है
sp2danny

इस उत्तर और अधिक मूल्यवान अगर यह समझाया होगा क्यों आप का उपयोग run, और यह मौजूदा विकल्प के लिए कैसे की तुलना में। बस एक और विकल्प को डंप करना केवल पसंद के विरोधाभास में योगदान देता है। (सौभाग्य runसे 2015 के बाद से अपडेट नहीं किया गया है, इसलिए अब यह एक विकल्प के रूप में ज्यादा नहीं है।)
डैन डस्केल्सस्कू

0

उनके नक़्शे - कदम पर चलिए:

  1. npm install --save-dev nodemon

  2. Package.json के "स्क्रिप्ट" अनुभाग में निम्नलिखित दो पंक्तियाँ जोड़ें:

"start": "node ./bin/www",
"devstart": "nodemon ./bin/www"

जैसा की नीचे दिखाया गया:

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node ./bin/www",
    "devstart": "nodemon ./bin/www"
}
  1. npm run devstart

https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/skeleton_website


ठीक है, यह अनिवार्य रूप से एक ही उत्तर के रूप में एक ही उत्तर है , लेकिन इसके चारों ओर अधिक "जादू" के साथ मौजूद है। लेकिन जवाब का सार "नोडोडेम का उपयोग करें" है। रीसेट मूर्त है। और यह खराब रूप से स्वरूपित था, लेकिन मैं देख रहा हूं कि डेविड ने तय किया है, इसलिए मैं अपने पतन को पूर्ववत कर दूंगा।
दान डस्कलेस्क्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.