এনজি স্বয়ংক্রিয়ভাবে ফাইল পরিবর্তনগুলি সনাক্ত না করে serve


110

ng serveসোর্স ফাইলগুলিতে যে কোনও পরিবর্তন হয়েছে আমাকে প্রতিবার চালানো দরকার I কনসোলে আমার কোনও ত্রুটি নেই।

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
আপনি এনজি সার্ভিস - ওয়াচ চেষ্টা করেছেন?
গ্রহ_হান্টার

2
হ্যাঁ. তবে এটি আমার সমস্যার সমাধান করেনি
ভাস্কারাও গুমমিদি

দয়া করে আমার আপডেট হওয়া উত্তরটি যাচাই করুন এবং এটি সমস্যার সমাধান করে কিনা তা আমাকে জানান।
গ্রহ_হান্টার

- এই পদ্ধতি ব্যবহার করে দেখুন stackoverflow.com/a/42534127/1191125
zeleniy

উত্তর:


151

লিনাক্সের বেশিরভাগ সময়, ng serve বা ng build --watchডিরেক্টরিতে পর্যাপ্ত অনুমতি না থাকলে কাজ করে না।

সমাধানটি হয় প্রয়োজনীয় অনুমতি প্রদান করা বা ব্যবহার করা sudo পরিবর্তে করা।

হালনাগাদ

ng serveডিফল্ট বিকল্প হওয়ায় ফ্ল্যাগ ইন ওয়াচটি আসলে অতিরিক্ত কাজ ant ভুলটি নির্দেশ করার জন্য @ জাফয়েডকে জমা দিন।


29
ধন্যবাদ. আমি অনুমতি ng serveনিয়ে চালাচ্ছি sudo। এটা কাজ।
ভাস্কারাও গুমমিদি

1
তারপরে, দয়া করে এটি উত্তর হিসাবে গ্রহণ করুন, যা ভবিষ্যতে এই প্রশ্নটি পড়তে অন্যদের সহায়তা করবে
মওগ বলেছেন মনিকা

3
@ মাডগ এর পরিবর্তে সুডো ব্যবহার করুন। ফাইলগুলির কোন সেটটির অনুমতি থাকা উচিত?
ওরাক্লেরুইজ

2
চলমান ব্যবহারকারীর উপর নির্ভর করে, যতটা সম্ভবত চলবে a+x, তবে আমি অনুমতিগুলি ব্যবহারের পরিবর্তে সতর্ক করে দিয়েছি sudosudoএটি একটি একক কমান্ডের জন্য, যদিও অনুমতি পরিবর্তন করা চিরকালের জন্য তাদের পরিবর্তন করে, যা বৃহত্তর সুরক্ষা লিক বলে মনে হয়।
মাওগ বলছেন মনিকা

5
--watchএটি একটি পূর্বনির্ধারিত হিসাবে, neccesary হওয়া উচিত নয়, দেখুন Angular.io/cli/ সংরক্ষণ দেখুন । সুতরাং @ টি। ভ্যান ডেন বার্গের উত্তরটি আসলে আরও নির্ভুল ছিল!
জাফয়েড

126
ng serve --poll=2000

লিনাক্স এবং উইন্ডোতে সূক্ষ্মভাবে কাজ করা


19
এর অর্থ কী (
এইচডি ..

1
এই কাজ নিশ্চিত করতে পারেন। উইন্ডোজ চলমান ভিএস কোড সহ উইন্ডোজ 10 (উবুন্টু) এ লিনাক্স সাবসিস্টেম চলছে।
এলেস পোটোকনিক হাহোনিনা

উবুন্টু 18.0.4 এ কাজ করে
নিশান বিক্রমারথনা

2
উবুন্টু 18.04 এ এটি কাজ করেছে। আপনি দয়া করে এর কারণ বর্ণনা করতে পারেন?
বিজেন্দ্র কুমার

2
আমার জন্য ভাল কাজ করে! তবে, প্রকল্পটি পুনরায় লোড করবেন না বলে আমি "এনজি সার্ভিস" বুঝতে পারি না।
হোসে লুইজ গঞ্জাজা নেটো

81

এটি বিবেচনা করুন, যখন প্রচুর পরিমাণে ফাইল থাকে, তখন লিনাক্সের আইএনটিফাই ওয়াচগুলির একটি সীমা থাকে । সুতরাং ঘড়ির সীমা 512 কে-তে বাড়ানো, উদাহরণস্বরূপ, এটি সমাধান করতে পারে।

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/Increasing-the-amount- অফ inotify-প্রহরী


5
এটি আমার জন্য উবুন্টু 14-এ কাজ করেছিল - "প্রতিধ্বনি fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf&& sudo sysctl --system"
মহেশ কাজল

1
আপনি চেক করতে / বর্তমান ঘড়ি সীমা পরীক্ষা এই commmand ব্যবহার করতে পারেন cat /proc/sys/fs/inotify/max_user_watches উপরে উত্তর একটি সম্পূর্ণ সম্পূর্ণ উত্তর কিন্তু এখানে একটু বেশি বর্ণনা দিয়ে একটি লিঙ্ক confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit
জুনায়েদ

ভাল কাজ করেছে। এটি লক্ষণীয় যে কিছু আইডিই (যেমন জেটব্রেইনস ওয়েবস্টর্ম) ফাইলের পরিবর্তনগুলিও ট্র্যাক করতে ইনোটাইফাই ব্যবহার করে। সুতরাং, যদি আপনি 5 টি প্রকল্প চালু করেন এবং এনজি সার্ভিস চালান।
মাল্টিস

25

এর কারণে, যে সিস্টেমগুলি পরিবর্তনগুলি সনাক্ত করে তা ডিফল্টরূপে এতগুলি ঘড়িগুলি পরিচালনা করতে পারে না।

এবং সমাধান হ'ল change the amount of watchesএটি পরিচালনা করতে পারে (প্রকল্পে থাকা সর্বাধিক পরিমাণ ফাইল) আপনার অবশ্যই run this command:

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

ইনোটাইফাইর সমস্যাটি প্রতিবার আপনি আপনার কম্পিউটার পুনরায় চালু করার সময় এই কাউন্টারটিকে পুনরায় সেট করে।


5
প্রতিধ্বনি fs.inotify.max_user_watches = 524288 | sudo tee -a /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 এনজি চালানো দরকার ।


5
খুব সুন্দর কাজ কিন্তু কেন এমনটা করা আসল প্রশ্ন .... মূল হিসাবে চালানো সেরা অনুশীলন নয় ...
পাইপো

5

এটি যদি আমার একই সমস্যা হয় তবে এটি সহায়তা করতে পারে। ব্যবহার করার চেষ্টা করছিলাম ng serveএবং ng build --watchমাঝে মাঝে কাজ করেছিল তবে বেশিরভাগ ক্ষেত্রে তারা কোড পরিবর্তনগুলি দেখছিল না এবং আমি ভেবেছিলাম এটির সাথে এটি করার কিছু ছিল ng

তারপরে আমি একটি সমস্যা মনে করলাম কিছুক্ষণ আগে ইনোটাইফাইড ঘড়িগুলি নিয়ে আমার

আমি এটি আমার উবুন্টু মেশিনে চালিয়েছি এবং মনে হচ্ছে কোড পরিবর্তন করে লাথি মেরেছে এবং দেখছি:

প্রতিধ্বনি fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf&& sudo sysctl - সিস্টেমে

কৃতিত্ব স্কট স্মিথের কাছে যায়


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 মন্তব্যগুলি আগে এসেছিল <!doctype html>So সুতরাং এটি অবৈধ ছিল বিসি এটি কোনও HTML অঞ্চলের বাইরে এইচটিএমএল সিনট্যাক্স।

আমি মন্তব্যগুলি এবং বাম মুছে ফেললাম, অটো আপডেট আবার কাজ শুরু করেছে (আরও একবার ম্যানুয়াল রিফ্রেশের পরে)।

সুতরাং index.htmlআপনি আপনার কোডের অন্য অংশগুলির মধ্যে দিয়ে যান যা আপনি সম্প্রতি এটি সম্পাদন করার আগে সম্পাদনা করেছেন এবং একে একে একে স্কেচি অংশগুলি কেটে ফেলুন, ব্রাউজারে রিফ্রেশ করুন, তারপরে ভিএস কোডে ফিরে এসে পরিবর্তন করুন, সংরক্ষণ করুন এবং দেখুন এটি অটো আপডেট হয় কিনা ।


1
টেমপ্লেট সহ অন্যান্য ত্রুটিগুলিও এটি সঠিকভাবে কাজ করা থেকে বিরত থাকতে পারে। আমার ক্ষেত্রে, আমি কাস্টম উপাদান একটি আশা ছিল @Input(), কিন্তু অ্যাট্রিবিউট ফাঁকা ছিল, এভাবে: [myInput]=""। এটি পুনরুদ্ধার করা মান সহ পূরণ করুন ng serve, কোনও ম্যানুয়াল রিফ্রেশ দরকার নেই।
জেরেফেথ

2

আমি আবিষ্কার করেছি যে প্রকল্পের ডিস্ট / ফোল্ডারটি মূলের মালিকানাধীন। এজন্য sudo ng serveকখন পরিবর্তনগুলি দেখা যায়ng serve দেখেন না ।

আমি ডিএসটি / ফোল্ডারটি সরিয়ে sudo rm -R dist/দেব সার্ভার শুরু করে এটির বর্তমান ব্যবহারকারী হিসাবে পুনরায় বিল্ড করেছি ng serveএবং সমস্ত আবার কাজ করেছে।


2

আমি একটি নতুন লিনাক্স উবুন্টু ইনস্টল করার সময় এই সমস্যাটি পেয়েছিলাম এবং লক্ষ্য করেছি যে একই সময়ে ভিএসকোডে 'সীমার জন্য অনেক বেশি নজরদার' সম্পর্কে আমি একটি ত্রুটি পেয়েছি। আমি এটি ভিএসকোডে ঠিক করার জন্য নির্দেশাবলী অনুসরণ করেছি এবং এটি এনজি ওয়াচ দিয়েও সমস্যাটি স্থির করেছে। এখানে আরও তথ্য https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc

আমি লক্ষ্য করেছি লোকেরা sudoঘড়ি চালানোর পরামর্শ দিচ্ছে। এটি একটি বিপজ্জনক খেলা, আপনি এনপিএম প্যাকেজগুলি আপনার সিস্টেমে রুট অ্যাক্সেস দিচ্ছেন। যদি আপনার অনুমতিগুলি সঠিক হয় তবে আমার সমস্যাটি আপনার সমস্যার সমাধান হতে পারে যেহেতু ব্যবহারকারী প্রতি সীমাবদ্ধতা রয়েছে এবং sudo হিসাবে চালিয়ে আপনি সীমা অতিক্রমকারী আপনার বর্তমান ব্যবহারকারীর পরিবর্তে রুট হিসাবে চালাচ্ছেন (vscode বা পরমাণুর মতো একটি ঘড়ি ভারী আদর্শ চালাচ্ছেন) চালু ). যদি কোনও কারণে আপনার কাছে ভুল অনুমতি থাকে তবে সেগুলি আপনার ব্যবহারকারী / গোষ্ঠীর সাথে সঠিকভাবে সেট করুন chown


সাথে chownচালানোর পরিবর্তে ব্যবহারের পরামর্শের জন্য +1 , যা সমস্ত উপায়ে এড়ানো উচিত! ng servesudo
টবি

1

আমার একই সমস্যা ছিল, sudo ng serveব্যবহারটি অসন্তুষ্টিজনকভাবে সমস্যাটিকে "সমাধান" করার জন্য বলে মনে হয়েছিল। ব্যবহার sudoসন্তোষজনক আইএমও নয়।

আমি আমার আইএনটিফাই গণনা বনাম আমার ডিফল্ট সীমা (8192) ব্যবহার করে যাচাই করেছি: lsof | grep inotify | wc -l উপরের কমান্ড দ্বারা প্রাপ্ত মানটি সীমাটির চেয়ে কম ছিল। আইএনটিফাই সমাধানটি আমার সমস্যার জন্য প্রযোজ্য বলে মনে হচ্ছে না।

আমি অনুমতি এবং মালিকানাও পরীক্ষা করে দেখলাম, উভয়ই ঠিক আছে, কাজ করে এমন অন্য প্রকল্পের সাথে তুলনীয়।

হতাশার মধ্যে দিয়ে আমি ভিএস কোড পুনরায় চালু করেছি। মূলত আমি সমস্ত দৃষ্টান্ত বন্ধ করে দিয়েছিলাম, আমার দু'টি দৌড়াতে হয়েছিল এবং উভয়ই পুনরায় খোলা হয়েছিল যার পরে সমস্যাটি চলে গেছে।

আমি কোথাও একটি সম্ভাব্য বাগের দিকে ঝুঁকছি। এটি আপনার সিস্টেমকে অভ্যন্তরে পরিণত করার আগে বিবেচনা করার মতো। ভাগ্যক্রমে / দুর্ভাগ্যক্রমে এই সমস্যাটি আবার ঘটেনি, যদি এটি হয় তবে আমি আরও গভীর খনন করব।



1

আমি এসও পরামিতিগুলি পরিবর্তন করার পরামর্শ দিচ্ছি না। Fs.inotify.max_user_watches প্যারামিটারটি পরিবর্তন করার পরে আমি কিছু (পিছিয়ে) সমস্যা অনুভব করেছি যেহেতু আপনার অন্যান্য পরিষেবা চলবে ...

"এনজি সার্ভ --পল = 2000" একটি ভাল সমাধান তবে আপনি সম্ভবত এই পরামিতিটি ভুলে যাবেন ...

তদন্ত করা হচ্ছে: https://github.com/angular/angular-cli/wiki/angular-cli আমি নিম্নলিখিত সমাধানটি করেছি।

পোল প্যারামিটারের সাথে ডি কৌণিক.জসন পরিবর্তন করা হয়েছে

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

আমার মেশিনে কাজ করে: ডি


ধন্যবাদ! এই তদর্থক পথ কনফিগ ফাইল পরিবর্তন ছাড়া এটি চালানোর জন্য হল: npm run ng serve -- --poll=2000। এটি ফাইল পরিবর্তন সনাক্তকরণের মতো দুর্দান্ত নয়, তবে এটি কেবল আমার মেশিনে কাজ করে (উবুন্টু 18.04 এর কর্পোরেট স্বাদ)। আমার ম্যাক্স_উসার_ওয়াচগুলি 524288 এ সেট হয়েছে তবে ng serveকিছু সময়ের পরেও পরিবর্তনগুলি সনাক্ত করতে ব্যর্থ। এটি তদন্ত করার চেয়ে আমার আরও ভাল কাজ করা উচিত, সুতরাং এই সমাধানটি আমার যা প্রয়োজন তা ঠিক।
অ্যান্ড্রে সিনিটসন

1

এরকম sudo ng serveকমান্ড একটি খারাপ অভ্যাস। আপনাকে npmঅনুমতিটি পরিবর্তন করতে হবে যাতে প্রতিবার আপনাকে কিছু ইনস্টল npm packagesকরতে হয় তবে আপনাকে ব্যবহার করতে হবে না sudo

এই লিঙ্কটি কীভাবে বর্তমান ব্যবহারকারীর কাছে এনএমপি অনুমতি পরিবর্তন করতে হবে এবং এনপিএম অনুমতি সেট করার পরে এই পদক্ষেপগুলি অনুসরণ করার পরে আপনি node_modulesআপনার প্রকল্প ডিরেক্টরি থেকে ফোল্ডারটি সরাতে এবং ব্যবহার করতে পারবেন তা সমাধান করতে পারে npm install। প্যাকেজ ইনস্টলেশন সমাপ্তির পরে আপনি চালাতে পারেন ng serveএবং sudo ng serveপ্রতিবার আপনার কৌণিক প্রকল্পটি চালাতে চাইলে আপনাকে করতে হবে না।



0

আমার উত্তর কার্যকর নাও হতে পারে। তবে এই কারণে আমি এই প্রশ্নটি অনুসন্ধান করি।

আমি একটি নতুন কম্পিউটার কেনার পরে, আমি সম্পাদকটিতে অটো সেভ সেট করতে ভুলে গেছি। সুতরাং কোডটি আসলে অপরিবর্তিত থাকে।


0

আমি কেবল আমার রেফারেন্সের জন্য আমার মামলাটি এখানে রেখে যেতে চাই। আমার ক্ষেত্রে সমস্যাটি ছিল সিস্টেমের অনুমতি নিয়ে। আমি একটি ভিএম এর ভিতরে একটি ভাগ করা ফোল্ডার রেপো হিসাবে ব্যবহার করেছি। অনুমতি অস্বীকার বা অন্য কিছুর মতো আমার মতো অন্য কোনও বার্তা ছিল না। সব কিছু চেষ্টা করে দেখুন এবং তখনই আমি বুঝতে পারি যে আমি একটি নেটওয়ার্ক ড্রাইভ ব্যবহার করছি।




0

ম্যাকের ক্ষেত্রে আমার ক্ষেত্রে এটি ব্যবহারকারীর / ইউএসআর / স্থানীয় / লিবিতে লগ ইন করার জন্য পড়ার / লেখার অনুমতি প্রদানের মাধ্যমে স্থির করা হয়েছিল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.