আমি দৌড়ে চেষ্টা করেছি webpack --watch
এবং আমার জেএস ফাইলগুলি সম্পাদনা করার পরে, এটি একটি স্বয়ংক্রিয় পুনঃসংশোধন ট্রিগার করে না।
আমি webpack
ব্যবহার করে পুনরায় ইনস্টল করার চেষ্টা করেছি npm uninstall
কিন্তু এটি এখনও কাজ করছে না।
কোন ধারনা?
উত্তর:
এফওয়াইআই: মনে হচ্ছে ওএস এক্সের একটি ফোল্ডার দূষিত হতে পারে এবং নিজের এবং যে কোনও শিশু ফোল্ডারগুলির জন্য আর পাঠাতে fsevents
(যা watchpack
/ chokidar
/ ফাইন্ডার ব্যবহার করে)। আমি নিশ্চিত হতে পারি না যে এটি আপনার সাথে ঘটেছিল তবে এটি আমার এবং সহকর্মীর জন্য খুব হতাশাবোধ করেছিল।
আমরা দুর্নীতিগ্রস্ত পিতা-মাতা ফোল্ডারের নাম পরিবর্তন করতে সক্ষম হয়েছি এবং তারপরে প্রত্যাশা অনুযায়ী তত্ক্ষণাত্ ইভেন্টগুলি ঘটেছে। আরও তথ্যের জন্য এই ব্লগ পোস্টে দেখুন: http://feedback.livereload.com/knowledgebase/articles/86239-os-x-fsevents-bug-may-prevent-monitoring-of-certai
উপরের লিঙ্ক থেকে প্রস্তাবিত সংশোধনগুলি হ'ল:
প্রথম দুটি আমাদের জন্য কাজ করে নি, স্পটলাইট পরামর্শটি ব্যবহার করে দেখেনি এবং পুনরায় তৈরি করা প্রয়োজনীয় প্রমাণিত হয়নি।
আমরা তাত্ক্ষণিকভাবে প্রদর্শিত না হওয়া অবধি ফাইন্ডারটি খোলার মাধ্যমে এবং প্রতিটি ক্রমাগত প্যারেন্ট ফোল্ডারে ফাইল তৈরি করে মূল সমস্যা ফোল্ডারটি সন্ধান করতে সক্ষম হয়েছি (যেহেতু ফাইন্ডার এছাড়াও এই বাগ দ্বারা আটকানো হবে)। রুট-সর্বাধিক ফোল্ডার যা আপডেট হয় না তা হ'ল অপরাধী। আমরা কেবল mv
এটি করছি এবং mv
এটি এর মূল নামটিতে ফিরে আসব, এবং তারপরে পর্যবেক্ষক কাজ করবেন।
দুর্নীতির কারণ কী তা ধারণা নেই, তবে আমি ঠিক করতে পেরে আনন্দিত।
watchify
, কোনও পদক্ষেপই আমার সাথে কাজ করেনি তাই আমি পোল আর্গ ব্যবহার করে শেষ করেছি। অনেক লোক ওয়াচাইফের পরিবর্তে ব্রাউজরিফাই করতে পোল আর্জিটি পার করছে। আমার কোডটি দেখে মনে হচ্ছে:watchify(browserify(config.src,{}), {poll:100});
npm install
ডিরেক্টরি চালানোর পাশাপাশি ডিরেক্টরিটির নামকরণ উভয়ই সিঙ্ক ক্লায়েন্টকে প্রয়োগ করার পদ্ধতিটি অত্যন্ত নিবিড় ক্রিয়াকলাপ।
যদি আপনার কোডটি আবার সংকলিত না হয়, তবে পর্যবেক্ষকদের সংখ্যা বাড়ানোর চেষ্টা করুন (উবুন্টুতে):
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
সূত্র: https://webpack.github.io/docs/troublesh ૂટ. html
sudo sysctl -p
মাভেরিক্সে কাজ করে না। কোন নতুন ধারণা?
ModuleConcatenationPlugin
। বাদ দেওয়া ModuleConcatenationPlugin
নজরদারি চালিয়ে যেতে দেয়।
/etc/sysctl.conf
সরাসরি দেখার এবং পরিবর্তন করার চেষ্টা করেছেন ? পরিবর্তন পরিবর্তন কী-মান নিষ্পত্তি? (যদি আপনি অ্যাড-হক প্রয়োগ করার আদেশটি খুঁজে না পান sysctl -p
) তবে ভাল এটি একক রিবুট, এবং আপনার ভাল হওয়া উচিত ...)
sudo sysctl -a | grep max_user_watches
আমার ওয়েবপ্যাক কনফিগারেশন ফাইলে নিম্নলিখিত কোড যুক্ত করা আমার জন্য সমস্যাটি স্থির করেছে। আপনার নোড_মডিউলগুলি ফোল্ডারটিকে এড়িয়ে চলতে ভুলবেন না, কারণ এটি এইচএমআর (হট মডিউল রিপ্লেসমেন্ট) এর পারফরম্যান্সকে হত্যা করবে:
watchOptions: {
poll: true,
ignored: /node_modules/
}
watch: true
কাজ করতে পারে। পোলিং হ'ল একটি প্রোগ্রাম বা ডিভাইস দ্বারা অন্য প্রোগ্রাম বা ডিভাইসগুলির তারা যে অবস্থায় আছে তা দেখতে সাধারণত তারা এখনও সংযুক্ত রয়েছে কিনা বা যোগাযোগ করতে চায় তা দেখার জন্য অবিচ্ছিন্ন চেক করা। সুতরাং সেটিংটি poll: true
ওয়েবপ্যাকটিকে আপনার প্রোগ্রামের অবস্থা পরীক্ষা করতে অনুমতি দেয় যে কোনও পরিবর্তন হয়েছে কিনা তা দেখার জন্য, বা কমপক্ষে আমি যেটা ধরে নিয়েছি তা ঘটছে।
poll
বিকল্পটি ওয়াচপ্যাক
ওয়েবস্টোরমের সাথে কাজ করার সময় আমার এই সমস্যা হয়েছিল।
সেটিংস -> সিস্টেম সেটিংস -> "নিরাপদ লিখন" অক্ষম করা হচ্ছে এটি আমার জন্য সমাধান করেছে।
এটি করার জন্য সুপারিশটি পেয়েছে: ওয়েবপ্যাক সমস্যা সমাধান
কেবলমাত্র সম্ভাব্য সমাধানগুলিতে যুক্ত করার জন্য: আমার ড্রপবক্স ফোল্ডারের ভিতরে আমার প্রজেক্ট ফোল্ডারটি ছিল এবং এটিকে সরানো আমার জন্য সমস্যার সমাধান করে। (ওএস এক্স)
ফোল্ডারের ক্ষেত্রে সংবেদনশীলতা আমার ইস্যু ছিল। আমার কোড কলগুলিতে () এর সমস্ত ছোট ছোট পথের নাম ছিল তবে প্রকৃত ডিরেক্টরিতে তাদের একটি বড় অক্ষর ছিল। আমি আমার সমস্ত ডিরেক্টরিকে তাত্ক্ষণিকভাবে ছোট হাতের কাজ এবং ওয়েবপ্যাক দেখার জন্য নতুন নামকরণ করেছি।
একটি সমস্যা হ'ল যদি আপনার পথের নামগুলি নিখুঁত না হয় তবে এর মতো জিনিসগুলি ঘটবে। আমি দুর্ঘটনাক্রমে পরিবর্তে সেট হয়ে resolve.root
গিয়েছিলাম এবং এর ফলে আমার উপরের ছেলের মতো ফাইল মুছতে এবং পুনরায় তৈরি করতে আমার অনেক সময় নষ্ট হয়ে যায়।./
__dirname
Pointend যেমন fs.inotify.max_user_watches পরিবর্তন সেজার দ্বারা এখনও যেমন দেখানো আপনার স্ক্রিপ্টটি তৈরি করে ব্যবহার পোলিং পরিবর্তে নেটিভ প্রহরী কাজ করে দেখুন যদি না হয় ডক্স বা webpack চলমান --watch --watch-poll
অপশন।
মনে রাখবেন যে আপনি যদি ভার্চুয়াল মেশিনে (ভ্যাগ্রান্ট / ভার্চুয়ালবক্স) ওয়েবপ্যাক চালনা করেন এবং হোস্ট প্ল্যাটফর্মে আপনার ফাইলগুলি পরিবর্তন করেন তবে ভাগ করা ফোল্ডারে ফাইল আপডেটগুলি উবুন্টুতে ইনোটিফাই না ট্রিগার করতে পারে। এটি পরিবর্তনগুলি ওয়েবপ্যাকের মাধ্যমে না নেওয়ার কারণ হবে।
দেখুন: ভার্চুয়ালবক্স টিকিট # 10660
আমার ক্ষেত্রে, ডি গেস্ট (vi তে) ফাইলটি সম্পাদনা এবং সংরক্ষণের ফলে ওয়েবপ্যাকটি ট্রিগার হয়েছিল। হোস্টে এটিকে সম্পাদনা করা (পিএইচপিস্টোরম, নোটপ্যাড বা অন্য কোনও অ্যাপ্লিকেশনটিতে) যা কিছুই হোক না কেন ওয়েবপ্যাকটি ট্রিগার করবেন না।
আমি ভ্যাগ্র্যান্ট- fsnotify ব্যবহার করে এটি সমাধান করেছি ।
vagrant-notify-forwarder
আরও যাদু পুনরায়
vagrant plugin install vagrant-notify-forwarder
আমার জন্য একটি স্থায়ী সমাধান করেছেন
লারাভেল হোমস্টেডে আমার জন্য কাজ করুন
--watch --watch-poll
আপডেটগুলি: পুরো ডিরেক্টরি মুছে ফেলা এবং রেপো থেকে নতুন করে গিট ক্লোনিং করা আমার সমস্যার সমাধান করে।
আপনি যদি ভিম ব্যবহার করছেন তবে আপনার ডিফল্ট অটোর পরিবর্তে হ্যাঁতে ব্যাকআপকপি সেট করার চেষ্টা করা উচিত। অন্যথায় ভিম মাঝেমধ্যে আসল ফাইলটির নাম পরিবর্তন করে একটি নতুন ফাইল তৈরি করবে যা ওয়েবপ্যাক ঘড়িতে গোলযোগ করবে:
https://github.com/webpack/webpack/issues/781
যদি এটি হয় তবে আপনার ভিম সেটিংসে এটি যুক্ত করুন:
সেটআপ ব্যাককপি = হ্যাঁ
আমার .vue ফাইলে একই সমস্যা ছিল। সার্ভার পুনরায় আরম্ভ করার সময় সমস্ত ঠিকঠাক কাজ করেছে, কিন্তু পরবর্তী সংরক্ষণে এটি আর পুনরায় সংকলিত হয়নি। সমস্যাটি আমদানি ফাইলের পথে ছিল যা একটি চিঠি মূলধন করেছিল। এই সমস্যাটি চিত্রিত করা খুব কঠিন কারণ সবকিছু সার্ভারের রিবুটটিতে কাজ করে। আপনার পাথের কেসটি পরীক্ষা করুন।
আমার জন্য, ভিএস কোডে ফোল্ডার এবং ফাইলগুলি তৈরি করা বিষয়টি ছিল। ঠিক করার জন্য, আমি আমার রেপো পুনরায় ক্লোন করেছি এবং এবার কোডের পরিবর্তে কমান্ড লাইনের মাধ্যমে নতুন ফোল্ডার এবং ফাইলগুলি তৈরি করেছি। আমি মনে করি কোড কোনও কারণে ফাইলগুলি দূষিত করছে। আমি অ্যাপ্লিকেশনটি সবেমাত্র আপডেট পেয়েছি তাই সম্ভবত এটি একটি নতুন বাগ।
আমার অনুরূপ ইস্যু ছিল, ওয়াচ মোড ওয়্যারে ওয়েবপ্যাক বা রোলআপ দুটিই আমার করা পরিবর্তনগুলি ধরতে পারে না। আমি জানতে পেরেছিলাম যে মডিউল (.tsx ফাইল) পরিবর্তন করার সময় এটি মূলত আমার দোষ ছিল যা এখনও অ্যাপ্লিকেশনটির কোথাও আমদানি করা হয়নি (উদাহরণস্বরূপ App.ts যা এন্ট্রি পয়েন্ট) এবং আমি বিল্ড সরঞ্জামগুলি ত্রুটিগুলি রিপোর্ট করার জন্য আশা করছিলাম I সেখানে তৈরি
আমি যেভাবে সমস্যার সমাধান করেছি তা আমদানির পথে মূলধন ত্রুটি খুঁজে পেয়েছিল। ফাইল সিস্টেমে ফোল্ডারে প্রথম অক্ষর ছিল, আমদানির পথটি ছিল বড় হাতের অক্ষর। সবকিছু সূক্ষ্মভাবে সংকলিত, সুতরাং এটি কেবল একটি ওয়েবপ্যাক ঘড়ির মধ্যে অন্তর্ভুক্ত ছিল।
এই সমস্যাটি ভার্চুয়ালবক্সের মধ্যে ছিল (5.2.18) উবুন্টু (18.04) ভিএম ভেরান্ট (2.1.15) সাথে আরএসসি সিঙ্ক্রোনাইজেশন ব্যবহার করে। হঠাৎ, প্রথম বিল্ড দুর্দান্ত রান করে কিন্তু সেট করেও ওয়েবপ্যাক পরিবর্তনগুলি পরে বিবেচনা করে না fs.inotify.max_user_watches=524288
। যুক্ত হচ্ছেpoll: true
ওয়েবপ্যাক কনফিগারেশনে করা কোনওরকম সাহায্য করেনি।
কেবল vagrant-notify-forwarder
কাজ করা হয়েছে (কোনও কারণে ভিজাগর- fsnotify করেনি), তবে হোস্টে ফাইল সংরক্ষণের পরে পুনর্নির্মাণ খুব দ্রুত ঘটেছিল এবং আমি মনে করি যে আরএসসিএনসিটির কার্য শেষ করার জন্য পর্যাপ্ত সময় নেই (সম্ভবত পরিমাণের কারণে) আমার ভ্যাগ্রান্টফায়ালের মধ্যে সিঙ্ক হওয়া ডিরেক্টরিগুলির?)।
অবশেষে আমি aggregateTimeout
আমার ওয়েবপ্যাক কনফিগারেশনে আরও বাড়িয়ে আবার ঘড়ির কাজ করেছি:
module.exports = {
watch: true,
watchOptions: {
aggregateTimeout: 10000
},
...
}
যদি এই সমাধানটি আপনার জন্য কাজ করে তবে এই মানটি আবার কমিয়ে দেখুন, অন্যথায় আপনি প্রতিবার সেভ করার সময় বিল্ডটি পুনরায় আরম্ভ না হওয়া পর্যন্ত আপনাকে 10 সেকেন্ড অপেক্ষা করতে হবে। ডিফল্ট মান 300 এমএস ।
মনে হচ্ছে যে মান: max_user_watches
মধ্যে/proc/sys/fs/inotify/max_user_watches
প্রভাবিত webpack হয়
আপনার আসল মান পরীক্ষা করতে
$cat /proc/sys/fs/inotify/max_user_watches
16384
16384 আমার ক্ষেত্রে ছিল এবং এটি এখনও যথেষ্ট ছিল না।
আমি বিভিন্ন ধরণের সমাধানের চেষ্টা করেছি যেমন:
$ echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
তবে মনে হচ্ছে যে আমি মানটি পরিবর্তন করলেও, আমি যখন আমার পিসি পুনরায় চালু করি তখন এটি 16384 ডিফল্ট হয়ে যায়।
ফাইলটি তৈরি করুন:
sudo nano /etc/sysctl.d/90-override.conf
এবং এটি দিয়ে পপুলেট করুন:
fs.inotify.max_user_watches=200000
মনে হচ্ছে 200000 আমার পক্ষে যথেষ্ট।
আপনি ফাইলটি তৈরি করে মান যুক্ত করার পরে কেবল পিসি পুনরায় চালু করুন এবং আপনার ঠিক আছে।
আমার মুছে ফেলার জন্য node_modules
এবং এনপিএম ইনস্টল বা সুতা আবার করা সমস্ত প্যাকেজ ইনস্টল করতে সমস্যার সমাধান হয়েছে
MacOS এ একটি সহজ সমাধান নিম্নলিখিত:
আপনার প্রকল্পটি একই ডিরেক্টরিতে দুটি টার্মিনাল উইন্ডো খুলুন।
প্রথম টার্মিনালে উইন্ডো রান করুন: ওয়েবপ্যাক - ওয়াচ
দ্বিতীয় টার্মিনালে উইন্ডোজ রান: ওয়েবপ্যাক-ডেভ-সার্ভার
আমি অনেকগুলি সম্ভাব্য সমাধান চেষ্টা করেছি এবং এটি সবচেয়ে নির্ভরযোগ্য বলে মনে হচ্ছে
webpack --watch
প্রকল্পটি সংকলন করে এবং ফাইলগুলি ডিস্কে সংরক্ষণ করে, webpack
প্রতিটি সেভের পরে চলার সমতুল্য । webpack-dev-server
একটি বিকাশ সরঞ্জাম যা মেমরিকে সংকলন করে এবং লিখিত সামগ্রীকে HTTP- র মাধ্যমে পরিবেশন করে। যে কোনও ক্ষেত্রে আপনার পরামর্শটি কোনও সমাধান নয়, যেহেতু সংকলিত ফাইলগুলি যতক্ষণ webpack --watch
বিজ্ঞাপন হিসাবে কাজ করবে না ততক্ষণ ডিস্কে লেখা হবে না ..
এই সমস্যাটি সমাধানের জন্য এক মুঠো কৌশল চেষ্টা করার পরে আমি কেবল হাল ছেড়ে দিয়ে শেষ করেছি তবে অন্য সমস্যাটি সমাধান করার সময় আমি আবার চেষ্টা করেছি এবং হঠাৎ --watch
পতাকাটি শেষ পর্যন্ত কাজ করছে।
সত্যি কথা বলতে কী আমি বিশেষত এটি কীভাবে কাজ করে তা জানি না তবে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করার পরে এটি সবেমাত্র কাজ শুরু করে:
1. Install most recent gcc version
$ sudo port install gcc48
$ sudo port select --set gcc mp-gcc48
2. Install most recent clang version
$ sudo port install clang-3.6
$ sudo port select --set clang mp-clang-3.6
3. Export variables holding the patch to C and C++ compiler
$ export CC=/opt/local/bin/clang
$ export CXX=/opt/local/bin/clang++
এটি ঘটতে পারে যে এই প্যাকেজগুলি ইনস্টল করার সময় কিছুটা নির্ভরতা কেবল ধাঁধাটির অনুপস্থিত অংশ যুক্ত করেছে, কে জানে ...
আশা করি এটির কাজ করার জন্য যে কেউ এখানে লড়াই করে সহায়তা করবে।
আমি অন্য উত্তর যুক্ত করছি কারণ আমি বিশ্বাস করি এটি এখন পর্যন্ত সেরা সমাধান। আমি এটি প্রতিদিন ব্যবহার করছি এবং এটি কাঁপছে! কেবল এই গ্রন্থাগারটি ইনস্টল করুন:
https://github.com/gajus/writ-file-webpack-plugin
বর্ণনা: ওয়েবপ্যাক-ডেভ-সার্ভার প্রোগ্রামকে ফাইল সিস্টেমে বান্ডিল ফাইলগুলি লিখতে বাধ্য করে।
কিভাবে ইনস্টল করতে হবে :
npm install write-file-webpack-plugin --save-dev
যদি আপনার প্রকল্পে হঠাৎ এটি ঘটে থাকে তবে এটি সমস্যার সমাধান করতে পারে।
হতে পারে যে কোনওভাবে আপনার প্রকল্পগুলি ট্র্যাক করে থাকা ফাইলগুলি পরিবর্তন করে যা ওয়েবপ্যাকটি দূষিত হয়ে গেছে। আপনি কেবল সাধারণ পদক্ষেপগুলি অনুসরণ করে এগুলি আবার তৈরি করতে পারেন।
আমি যখন এই জাতীয় সমস্যাটি নিয়ে আসছিলাম তখন আমি এই প্রশ্নটি জুড়ে এসেছি - এটি উপস্থিত হয়েছিল যে ওয়েবপ্যাকটি পুনরায় প্রত্যাবর্তন করছে না, এমনকি যখন ওয়েবপ্যাক - কনফিগ চালাচ্ছে।
এমনকি আমি বান্ডেল.জেগুলিও মুছে ফেলেছি এবং ওয়েবপৃষ্ঠাটি আমার সম্পাদনার আগের মতো প্রদর্শিত হয়েছিল।
আপনারা যারা এই একই সমস্যাটি পেয়েছেন, শেষ পর্যন্ত আমি ক্রোমে 'খালি ক্যাশে এবং হার্ড পুনরায় লোড' বিকল্পটি করেছি (ডিভলটুলগুলি খোলা রেখে পুনরায় লোড বোতামটি ডান ক্লিক করুন) এবং এটি সেই কৌশলটি করেছিল
.Js এবং .ts ফাইলগুলির মধ্যে সমস্যা ছিল। কেন?
প্রকল্প তৈরিতে, ভিজ্যুয়াল স্টুডিওগুলি .js এবং .js.map এ টাইপস্ক্রিপ্ট ফাইলগুলি সংকলন করে। এটি সম্পূর্ণ অপ্রয়োজনীয়, কারণ ওয়েবপ্যাক টাইপস্ক্রিপ্ট ফাইলগুলিও পরিচালনা করে (দুর্দান্ত-টাইপসক্রিপ্ট-লোডার সহ)। যখন ভিজ্যুয়াল স্টুডিও কোডে অক্ষম কম্পাইলঅনসেভ সহ কমপিট .tsx ফাইলগুলি সম্পাদনা করবেন বিকল্প , সম্পাদিত টিএস ফাইলটি পুনরায় সংমিশ্রিত হয় না এবং আমার ওয়েবপ্যাকটি অবাস্তব .js ফাইলটি প্রক্রিয়াকরণ করছিল।
সমাধানটি ছিল প্রকল্প বিল্ডের ভিজ্যুয়াল স্টুডিওতে টাইপস্ক্রিপ্ট ফাইলগুলি সংকলন অক্ষম করা। অ্যাড
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
আপনার .csproj এর প্রপার্টি গ্রুপে।