कोड परिवर्तन पर Sails.js ऐप को पुनः लोड करना ऑटो?


107

वर्तमान में ऐसा लगता है कि sails.js ऐप में किसी भी कोड परिवर्तन के लिए आपको मैन्युअल रूप से पाल सर्वर को बंद करना होगा और sails liftपरिवर्तनों को देखने से पहले फिर से चलाना होगा ।

मैं सोच रहा था कि क्या कोई तरीका है जब कोड बदलने का पता लगाने के लिए विकास मोड में स्वचालित रूप से पाल सर्वर को फिर से चालू करना है?

जवाबों:


74

आपको एक चौकीदार का उपयोग करना होगा जैसे कि हमेशा के लिए , नीड़ , या कुछ और ...

उदाहरण

  1. हमेशा के लिए स्थापित करें :

    sudo npm install -g forever

  2. चलाओ:

    forever -w start app.js


अनंत पुनरारंभ से बचने के लिए क्योंकि Sails .tmpफ़ोल्डर में लिखता है , आप .foreverignoreअपनी परियोजना निर्देशिका में एक फ़ाइल बना सकते हैं और इस सामग्री को अंदर रख सकते हैं:

**/.tmp/**
**/views/**
**/assets/**

GitHub पर समस्या देखें: /.tmp के कारण हमेशा के लिए पुनरारंभ


7
आप उन विचारों को भी जोड़ना चाह सकते हैं .foreverignoreक्योंकि उन्हें तुरंत बदलाव देखने के लिए पुनरारंभ की आवश्यकता नहीं है। जैसे**/views/**
सेठ मलकी

लेकिन दुर्भाग्य से ये बूटस्ट्रैप कोड को फिर से निष्पादित करेगा और सत्रों का नुकसान होगा।
राउलसेवर

1
मैंने इसका उपयोग किया लेकिन मुझे निम्नलिखित चेतावनी मिली: --minUptime सेट नहीं है। डिफ़ॉल्ट करने के लिए: 1000ms। मैं इस चर को कैसे सेट करूं?
गोलिनमर्क

47

आप पाल-हुक-ऑटोरेलोड का उपयोग कर सकते हैं

बस अपने ऐप को सामान्य रूप से उठाएं, और जब आप किसी मॉडल या कंट्रोलर फ़ाइल को जोड़ / बदल / हटा देते हैं, तो सभी नियंत्रक और मॉडल ऐप को लोअर / रिफ़्लेक्ट किए बिना फिर से लोड किए जाएंगे।


1
यह सबसे आसान / आसान उपाय लगता है। Npm को स्थापित करें और नमूना फ़ोल्डर में नमूना autoreload.js जोड़ें और आप मूल रूप से किए गए हैं।
ब्रिंटैपर

1
बिल्कुल अद्भुत। सबसे सरल और सबसे मूल निवासी है।
एलेक्सस

इम हो रही Details: Error: ER_ROW_IS_REFERENCED: Cannot delete or update a parent row: a foreign key constraint failद्वारा फेंका 5/lib/node_modules/sails/lib/hooks/orm/index.js:221जब मैं बचाने (पाल 11.3 का प्रयोग करके)
बकवाद

45

उदाहरण के लिए nodemonएपीआई और कॉन्फिग डायरेक्टरीज़ देखना

.nodemonignore अंतर्वस्तु

views/*
.tmp/*
.git/*

.Nodemonignore बनाने के बाद कमांड चलाएँ

$> nodemon -w api -w config

पर्यवेक्षक के लिए उदाहरण 3 निर्देशिकाओं की अनदेखी करना

$> supervisor -i .tmp,.git,views app.js

4
मुझे nodemonसमाधान पर समाधान पसंद है कि foreverकैसे nodemonपाइप w को वापस w / o अतिरिक्त कॉन्फ़िगरेशन में आउटपुट करता है। विकास वर्कफ़्लो को आसान बनाता है।
आरोन रैंसले

कमांड के लिए मैंने सिर्फ आपके .nodemonignoreउदाहरण और रन का उपयोग किया है nodemon। यह अब तक काम करता है।
माइकल जे। कैलकिंस

किसी और के बारे में उलझन में है कि उपरोक्त लॉन्च (बराबर) कैसे चल रहा है sails lift, नोडमॉन उपयोग करना जानता है app.js
टायलर कोलियर

9

यदि आप Sails 0.11 का उपयोग कर रहे हैं, तो आप मॉडल या नियंत्रक बदलने पर स्वचालित रूप से पुनः लोड करने के लिए इस हुक को स्थापित कर सकते हैं (विचारों को पुनः लोड करने की आवश्यकता नहीं है):

npm install sails-hook-autoreload

https://www.npmjs.com/package/sails-hook-autoreload


1
इसका उल्लेख पहले ही विटालि मसलियानोक के पहले वाले उत्तर द्वारा किया गया था।
टायलर कोलियर

8

nodemonविश्व स्तर पर या स्थानीय स्तर पर स्थापित करें।

npm install nodemon --save
npm install nodemon -g

sailsनिम्नानुसार आप प्रोजेक्ट में स्थानीय रूप से स्थापित करें

npm install sails --save

फिर बदलो package.json

से

"scripts": {
  "debug": "node debug app.js",
  "start": "node app.js"
},

सेवा

"scripts": {
   "debug": "node debug app.js",
   "start": "node app.js",
   "dev": "export NODE_ENV=development && nodemon --ignore 'tmp/*' app.js && exit 0"
},

फिर

npm run dev

7

मुझे भी यही समस्या थी और मैंने इसे ग्रुंट-वॉच और ग्रंट-फॉर-सिलेबल्स @ बीटा कार्यों के साथ हल किया है। परिणाम 4 ग्रंट कमांड है:

अद्यतन: कार्य वर्तमान पाल संस्करण में उपलब्ध हैं (अब यह बीटा नहीं है:>)

  • स्टार्ट सर्वर शुरू करता है
  • रुकें सर्वर हो जाता है
  • पुनरारंभ सर्वर को पुनरारंभ करता है
  • startWatch सर्वर शुरू करता है और इसे फिर से शुरू करने के लिए परिवर्तनों का इंतजार करता है ( ग्रंट -वॉच का उपयोग करके)। यह संभवतः आपका समाधान है, लेकिन अन्य कमांड भी उपयोगी हैं।

यहां कोड है - मैं sails @ बीटा का उपयोग कर रहा हूं, जिसमें एक कार्य निर्देशिका शामिल है , मुझे नहीं पता कि क्या यह पिछले संस्करणों में शामिल है:

  • सबसे पहले आपको अपनी पाल निर्देशिका में हमेशा के लिए स्थापित करना होगा:

    npm install grunt-forever --save-dev
  • कार्य / विन्यास / हमेशा के लिए। हमेशा के लिए कॉन्फ़िगर करें कार्य।

    module.exports = function(grunt) {
      grunt.config.set('forever', {
        server: {
           options: {
              index: 'app.js',
              logDir: 'logs'
           }
        }
      });
    
      grunt.loadNpmTasks('grunt-forever');
    };
  • कार्य / विन्यास / watch.js ( संपादित करें ) एक नया नियम जोड़ने के लिए घड़ी कार्य संपादित करें

    // api and assets default rules
    ,
    server: {
        // Server files to watch:
        files: [
            'api/**/*',
            'config/**/*'
        ],
    
        // Restart server
        tasks: ['forever:server:restart']
    }
  • कार्य / रजिस्टर / watchForever.js अपने कस्टम कार्य पंजीकृत करें (यह फ़ाइल जो भी आप चाहते हैं उसका नाम बदला जा सकता है)

    module.exports = function(grunt) {
    // Starts server
      grunt.registerTask('start', [
        'compileAssets',
        'linkAssetsBuild',
        'clean:build',
        'copy:build',
        'forever:server:start'
      ]);
    
      // Restarts the server (if necessary) and waits for changes
      grunt.registerTask('startWatch', [
        'restart',
        'watch:server'
      ]);
    
      // Restarts server
      grunt.registerTask('restart', [
        'forever:server:restart'
      ]);
    
      // Stops server
      grunt.registerTask('stop', [
        'forever:server:stop'
     ]);
    };

इसके साथ ही आपको उपयोग करने में सक्षम होना चाहिए

    grunt startWatch

और अपने सर्वर को फिर से शुरू होने के लिए परिवर्तनों की प्रतीक्षा करें:>

उम्मीद है कि इस मदद की!


6

बेहतर आप उपयोग करें

npm install -g nodemon

मैं इसका उपयोग कर रहा हूं, और यह मेरी विकासशील गति को बेहतर बनाने में मदद करेगा। इस एक के लिए किसी भी फाइल को संपादित करने की आवश्यकता नहीं है!

इंस्टालेशन के बाद

nodemon app.js

यदि आप प्रत्येक सेव के लिए अपने सर्वर को रिस्टार्ट करना चाहते हैं तो Nodemon अच्छा है। लेकिन यदि आप वेबस्टॉर्म या ऑटो सेव के साथ किसी भी विचारधारा का उपयोग कर रहे हैं तो यह आपके सर्वर को लगातार चालू करेगा।
विष्णु केआर

बिल्कुल श्रीविष्णु के.आर.
BINFAS K

1

इस प्रश्न पर आने वाले किसी भी व्यक्ति के लिए, ऐसा लगता है कि यह अब आवश्यक नहीं है - इसके साथ लॉन्च किए गए एप्लिकेशन sails liftमें एक ग्रन्ट वॉच कार्य चल रहा होगा, और कोड परिवर्तन बिना पुनरारंभ किए दिखाई देंगे।

मुझे एहसास नहीं था कि यह पहली बार हो रहा था क्योंकि सांत्वना में क्या हो रहा है, यह इंगित करने के लिए कुछ भी नहीं है, लेकिन यह बिना पुनरारंभ किए काम करने लगता है (मैं पाल 0.11 का उपयोग कर रहा हूं)


8
मुझे नहीं लगता कि यह मामला है, मुझे अभी भी किसी भी नियंत्रक को बदलने के बाद पाल को फिर से शुरू करना होगा
fengd

मुझे अपने परिवर्तनों को देखने के लिए ऐप को पुनरारंभ करने की भी आवश्यकता है।
11:100 बजे user1007522
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.