एनजी सेवा स्वचालित रूप से फ़ाइल परिवर्तनों का पता नहीं लगाती है


110

ng serveजब स्रोत फ़ाइलों में किए गए किसी भी परिवर्तन के लिए मुझे हर बार चलाने की आवश्यकता होती है। मुझे कंसोल में कोई त्रुटि नहीं है।

Angular CLI: 1.6.2
Node: 8.9.1
OS: linux ia32
Angular: 5.1.2
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cdk: 5.0.2-c3d7cd9
@angular/cli: 1.6.2
@angular/material: 5.0.3-e20d8f0
@angular-devkit/build-optimizer: 0.0.36
@angular-devkit/core: 0.0.22
@angular-devkit/schematics: 0.0.42
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.2
@schematics/angular: 0.1.11
@schematics/schematics: 0.0.11
typescript: 2.4.2
webpack: 3.10.0

2
क्या आपने एनजी सर्व - वॉच की कोशिश की?
Planet_hunter

2
हाँ। लेकिन इसने मेरी समस्या का समाधान नहीं किया
भास्करराव गुम्मिदि

कृपया मेरे अद्यतन उत्तर की जाँच करें और मुझे बताएं कि क्या यह समस्या हल करता है।
Planet_hunter

इस तरह से कोशिश करें - stackoverflow.com/a/42534127/1191125
zeleniy

जवाबों:


151

यदि लिनक्स के पास पर्याप्त अनुमति नहीं है तो अधिकांश बार लिनक्स में काम करता है ng serveया ng build --watchनहीं करता है।

समाधान या तो आवश्यक अनुमति प्रदान करने या sudoइसके बजाय उपयोग करने के लिए है।

अपडेट करें

वॉच फ्लैग ng serveवास्तव में बेमानी है क्योंकि यह डिफ़ॉल्ट विकल्प है। गलती बताने का श्रेय @Zaphoid को।


29
धन्यवाद। मैं परमिशन ng serveलेकर चलता हूं sudo। काम हो गया।
भास्करराव गुम्मिदी

1
फिर, कृपया इसे उत्तर के रूप में स्वीकार करें, जो भविष्य में इस प्रश्न को पढ़ने वाले अन्य लोगों की मदद करेगा
मावग का कहना है कि मोनिका

3
@ मेव के बजाय सुडो का उपयोग करना। फ़ाइलों की अनुमति का कौन सा सेट होना चाहिए?
oracleruiz

2
उपयोगकर्ता पर निर्भर करता है जो चल रहा है, शायद उतना ही a+x, लेकिन मैं इसके बजाय अनुमतियों का उपयोग करने के खिलाफ चेतावनी देता हूं sudosudoएक एकल आदेश के लिए है, जबकि बदलती अनुमतियाँ उन्हें हमेशा के लिए बदल देती हैं, जो एक बड़ा सुरक्षा रिसाव लगता है।
मावग का कहना है कि मोनिका

5
--watchneccesary नहीं होना चाहिए, क्योंकि यह एक डिफ़ॉल्ट है, angular.io/cli/serve देखें । इसलिए @ टी। वैन डेन बर्ग का जवाब वास्तव में अधिक सटीक था!
ज़ाफॉइड ऑक्ट

126
ng serve --poll=2000

लिनक्स और खिड़कियों में काम करना ठीक है


19
इसका क्या मतलब है (--पॉल)
HD ..

1
इस काम की पुष्टि कर सकते हैं। विंडोज पर चल रहे वीएस कोड के साथ वाइंडोस 10 (उबंटू) पर लिनक्स सबसिस्टम चल रहा है।
एलेस पोटोनिक हनहिना

Ubuntu 18.0.4 पर काम करता है
निसान विक्रमारथना

2
वह ubuntu 18.04 पर काम किया। क्या आप इसका कारण बता सकते हैं?
विजेंद्र कुमार

2
मेरे लिए ठीक काम करता है! लेकिन, मुझे समझ में नहीं आता है कि "एनजी सर्व" परियोजना को फिर से लोड न करें।
जोस लुइज़ गोंजागा नेटो

81

इस बात पर विचार करें कि बड़ी संख्या में फाइलें होने पर, लिनक्स पर INotify Watches की एक सीमा होती है । इसलिए घड़ियों की सीमा बढ़ाकर 512K करना, उदाहरण के लिए, इसे हल कर सकता है।

sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl -p --system

ध्यान दें कि पिछला एक इन-मेमोरी परिवर्तन का कारण बनता है जिसे आप पुनः आरंभ करने के बाद खो देंगे।

हालाँकि, आप इसे निष्पादित करके, इसे लगातार बना सकते हैं :

echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

संदर्भ के रूप में, आप देख सकते हैं: https://github.com/angular/angular-cli/issues/8313#issuecomment-362728855 और https://github.com/guard/listen/wiki/Inc बढ़ते -the - amount- की-inotify पर नजर रखने वालों


5
इसने मेरे लिए ubuntu 14 पर काम किया - "echo fs.inotify.max_user_watches =2424288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system"
mahesh kajale

1
आप जांच करने के लिए / वर्तमान घड़ी सीमा का परीक्षण इस commmand उपयोग कर सकते हैं cat /proc/sys/fs/inotify/max_user_watches ऊपर जवाब पूरी तरह से एक पूरा जवाब है, लेकिन यहाँ छोटे से अधिक विवरण के साथ एक लिंक है confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit
जुनैद

ठीक काम किया। यह ध्यान देने योग्य है कि कुछ IDE (जैसे JetBrains Webstorm) फ़ाइल परिवर्तनों को ट्रैक करने के लिए inotify का उपयोग करते हैं। इसलिए, यदि आप 5 प्रोजेक्ट खोलते हैं और एनजी सर्व चलाते हैं तो इसे ध्यान में रखें।
मल्टीस

25

बदलावों का पता लगाने वाली प्रणाली डिफ़ॉल्ट रूप से इतनी घड़ियों को संभाल नहीं सकती है।

और इसका समाधान यह है change the amount of watchesकि (परियोजना में अधिकतम फ़ाइलें जो आपके पास होंगी) को आप संभाल सकते हैं run this command:

echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches

Inotify के साथ समस्या इस काउंटर को हर बार जब आप अपने कंप्यूटर को पुनरारंभ करते हैं, तो रीसेट कर रहा है।


5
echo fs.inotify.max_user_watches = 524288 | सुडो टी-ए /etc/sysctl.conf और& sudo sysctl -p
वैगनर डा सिल्वा

18

आपके प्रोजेक्ट में डिस्ट फ़ोल्डर रूट द्वारा स्वयं है

के sudo ng serveबजाय उपयोग करने का प्रयास करें ng serve

एक और समाधान

जब लिनक्स में बड़ी संख्या में फाइलें काम नहीं करती हैं, तो देखा जाता है। लिनक्स पर इनोटिक्ट वॉच में एक सीमा होती है। इसलिए घड़ियों की सीमा बढ़ाना

//When live server not work in linux

sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl -p --system

ng serve //You can also do sudo **ng serve**

8

केवल समस्या को हल करने के लिए sudo ng सर्व करने की आवश्यकता है।


5
अच्छा वर्कअराउंड लेकिन ऐसा करने के लिए असली सवाल है .... रूट के रूप में चल रहा है सबसे अच्छा अभ्यास नहीं है ...
Pipo

5

अगर मेरी वही समस्या है तो यह मदद कर सकता है। उपयोग करने की कोशिश कर रहा है ng serveऔर ng build --watchकभी-कभी काम किया है, लेकिन ज्यादातर वे कोड परिवर्तन के लिए नहीं देख रहे थे और मुझे लगा कि यह कुछ करना है ng

फिर मुझे एक समस्या याद आई जो मुझे कुछ समय पहले इनॉटिफ़ घड़ियों के साथ मिली थी

मैंने इसे अपने उबंटू मशीन पर चलाया और ऐसा लगता है कि इसमें कोड परिवर्तन देखे गए हैं:

echo fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

इसका श्रेय स्कॉट स्मिथ को जाता है


3

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

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

cat /proc/sys/fs/inotify/max_user_watches

fs.inotify.max_user_watches=524288


2

यदि अन्य सभी विफल हो जाते हैं, तो सिंटैक्स त्रुटियों के लिए अपने कोड की जांच करें - विशेष रूप से index.html, या आपके कोड के कुछ हिस्सों को आपने हाल ही में संपादित किया था इससे पहले कि यह ऑटो अपडेट टूट गया। सिंटैक्स त्रुटियां इस ऑटो अपडेट कार्यक्षमता को कोणीय में तोड़ देगी।

मेरे मामले में, मेरे पास अलग-अलग वीएस कोड विंडो में कई परियोजनाएं खुली थीं। मेरी सभी अन्य परियोजनाओं पर, ng serveउम्मीद के मुताबिक काम किया: यह ऑटो सेव पर अपडेट हुआ। लेकिन एक परियोजना पर इसे अपडेट करने के लिए एक मैनुअल रिफ्रेश की आवश्यकता होगी। यह समाप्त हो रहा है क्योंकि मेरे पास टेम्पलेट के परिभाषित HTML क्षेत्र के बाहर HTML टिप्पणियां हैं (इसलिए, HTML टिप्पणियाँ पहले आई <!doctype html>थीं। इसलिए यह अमान्य था कि यह HTML क्षेत्र के बाहर HTML वाक्यविन्यास है।

मैंने टिप्पणियों और बेम को मिटा दिया, ऑटो अपडेट ने फिर से काम करना शुरू कर दिया (एक और मैनुअल रिफ्रेश के बाद)।

तो index.htmlइस कोड को तोड़ने से पहले या बाद में आपके द्वारा संपादित किए गए अपने कोड के अन्य हिस्सों पर जाएं और एक-एक करके, स्केच वाले हिस्सों को काट दें, ब्राउज़र में रिफ्रेश करें, फिर वीएस कोड पर वापस आएं और एक बदलाव करें, सहेजें और देखें कि क्या यह ऑटो अपडेट है या नहीं ।


1
टेम्पलेट के साथ अन्य त्रुटियां भी इसे सही तरीके से काम करने से रोक सकती हैं। मेरे मामले में, मुझे कस्टम घटक की उम्मीद थी @Input(), लेकिन विशेषता रिक्त थी, जैसे [myInput]="":। एक मूल्य के साथ इसे बहाल ng serve, कोई मैनुअल ताज़ा की आवश्यकता है।
ज़रीफेथ

2

मुझे पता चला कि परियोजना में डिस्ट / फोल्डर का स्वामित्व जड़ से था। इसीलिए sudo ng serveजब ng serveनहीं होता है तब बदलाव देखता है ।

मैंने डिस्ट / फोल्डर को हटा दिया sudo rm -R dist/और देव सर्वर शुरू करके वर्तमान उपयोगकर्ता के रूप में इसे ng serveफिर से बनाया।


2

मुझे एक नए लिनक्स उबंटू इंस्टाल पर यह समस्या आ रही थी और मैंने देखा कि मुझे एक ही समय में VSCode में 'लिमिट के लिए बहुत सारे वॉचर्स' के बारे में एक त्रुटि मिल रही थी। मैंने VSCode में इसे ठीक करने के निर्देशों का पालन किया और इसने एनजी वॉच के साथ इस मुद्दे को भी ठीक किया। यहाँ और अधिक जानकारी https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc

मैंने देखा कि लोग sudoघड़ी चलाने का सुझाव दे रहे हैं। यह एक खतरनाक गेम है, आप अपने सिस्टम में npm संकुल को रूट एक्सेस दे रहे हैं। यदि आपकी अनुमतियां सही हैं, तो मेरा मुद्दा आपकी सीमा के बाद से फिक्स हो सकता है क्योंकि सीमा उपयोगकर्ता के अनुसार है, और sudo के रूप में चलाकर, आप अपने वर्तमान उपयोगकर्ता के बजाय रूट के रूप में चल रहे हैं जो कि सीमा के पार है (vscode या परमाणु की तरह एक घड़ी भारी विचार चल रहा है) पर )। यदि किसी कारण से आपके पास गलत अनुमतियां हैं, तो उन्हें अपने उपयोगकर्ता / समूह के साथ ठीक से सेट करें chown


+1 के साथ chownचलने के बजाय उपयोग करने के सुझाव के लिए , जिसे हर तरह से टाला जाना चाहिए! ng servesudo
तोबी

1

मेरे पास एक ही समस्या थी, sudo ng serveइस समस्या को असंतोषजनक रूप से "हल" करने के लिए लग रहा था। उपयोग करना sudoसंतोषजनक नहीं है IMO।

मैंने अपनी INTify गणना बनाम मेरी डिफ़ॉल्ट सीमा (8192) का उपयोग करके जाँच की: lsof | grep inotify | wc -l उपरोक्त कमांड द्वारा लौटाया गया मान सीमा से कम था। इसलिए INotify समाधान मेरी समस्या पर लागू नहीं हुआ।

मैंने अनुमतियों और स्वामित्व की भी जाँच की, दोनों ठीक लग रहे थे, एक और परियोजना की तुलना में जो काम करती थी।

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

मैं एक संभावित बग की ओर कहीं झुक रहा हूं। यह आपके सिस्टम को अंदर बाहर करने से पहले विचार करने के लिए कुछ है। सौभाग्य से / दुर्भाग्य से यह समस्या फिर से नहीं हुई है, अगर ऐसा होता है तो मैं गहराई से खुदाई करूँगा।



1

मैं SO मापदंडों को बदलने की सलाह नहीं देता। मैंने fs.inotify.max_user_watches पैरामीटर को बदलने के बाद कुछ (अंतराल) मुद्दों का अनुभव किया है क्योंकि आपके पास अन्य सेवाएं होगी ...

"एनजी सर्व --poll = 2000" एक अच्छा समाधान है, लेकिन आप शायद इस पैरामीटर को भूल जाएंगे ...

जांच: https://github.com/angular/angular-cli/wiki/angular-cli मैंने निम्न समाधान किया।

पोल पैरामीटर के साथ बदल दिया गया है कोणीय

"serve": {
   "builder....
   "options": {
        "browserTarget": "xkcd:build",
        "poll": 2000
   }
   ...

मेरी मशीन पर काम करता है: डी


धन्यवाद! यह विन्यास फाइल को संशोधित किए बिना इसे चलाने का तदर्थ तरीका है npm run ng serve -- --poll=2000:। यह फ़ाइल परिवर्तन का पता लगाने के रूप में अच्छा नहीं है, लेकिन सिर्फ मेरी मशीन (Ubuntu 18.04 का कॉर्पोरेट स्वाद) पर काम करता है । मेरे पास max_user_watches 524288 पर सेट है, लेकिन फिर ng serveभी कुछ समय बाद परिवर्तनों का पता लगाने में विफल रहता है। मेरे पास इसकी जांच करने की तुलना में बेहतर चीजें हैं, इसलिए यह समाधान सिर्फ वही है जो मुझे चाहिए।
आंद्रेई सिनिटसन

1

ऐसा करने से sudo ng serveआदेश एक बुरी बात है। आपको npmअनुमति बदलनी होगी ताकि हर बार अगर आपको कुछ स्थापित npm packagesकरना पड़े तो आपको उपयोग न करना पड़े sudo

यह लिंक हल कर सकता है कि वर्तमान उपयोगकर्ता के लिए npm की अनुमति को कैसे बदला जाए और npm अनुमति सेट करने के बाद इस चरणों का पालन करने के बाद आप node_modulesअपने प्रोजेक्ट निर्देशिका से फ़ोल्डर को हटा सकते हैं और उपयोग कर सकते हैं npm install। संकुल स्थापना के पूरा होने के बाद आप चला सकते हैं ng serveऔर आपको sudo ng serveहर बार अपनी कोणीय परियोजना को चलाने की आवश्यकता नहीं है ।



0

मेरा उत्तर उपयोगी नहीं हो सकता है। लेकिन मैं इस सवाल को इस वजह से खोजता हूं।

नया कंप्यूटर खरीदने के बाद, मैं संपादक में ऑटो सेव सेट करना भूल गया। इसलिए, कोड वास्तव में अपरिवर्तित रहता है।


0

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




0

मैक पर मेरे मामले में इसे पढ़ने / लिखने की अनुमति उपयोगकर्ता द्वारा लॉग इन करने के लिए / usr / स्थानीय / परिवाद द्वारा दी गई थी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.