চূড়ান্ত ত্রুটি: গাদা সীমাটির অকার্যকর মার্ক-কমপ্যাক্টগুলি বরাদ্দ ব্যর্থ হয়েছে - জাভাস্ক্রিপ্ট হিপ মেমরি থেকে আয়নিক 3 আউট


উত্তর:


134

যারা গুগল থেকে এই প্রশ্নে অবতরণ করেন তাদের জন্য একটি অ-কৌনিক সাধারণ উত্তরের জন্য:

যতবারই আপনি এই ত্রুটির মুখোমুখি হন সম্ভবত এটি একটি মেমরি ফাঁস বা নোড <= 10 এবং নোড> 10 মেমরি পরিচালনা করার মধ্যে পার্থক্যের কারণে। সাধারণত নোডে বরাদ্দ করা মেমরিটি কেবল আপনার প্রোগ্রামটি চালানোর অনুমতি দেয় তবে প্রকৃত সমস্যাটি আসলে সমাধান করতে পারে না এবং নোড প্রক্রিয়া দ্বারা ব্যবহৃত মেমরিটি এখনও আপনার বরাদ্দ করা নতুন মেমরির চেয়ে বেশি হতে পারে। আমি যখন আপনার নোড প্রক্রিয়াতে মেমরির ব্যবহারের প্রোফাইল তৈরি করতে পরামর্শ দেব যখন এটি নোড> 10 এ চলতে বা আপডেট করা শুরু করে।

আমার একটি স্মৃতি ফুটো ছিল। নোডে মেমরি ফাঁস ডিবাগিং সম্পর্কিত একটি দুর্দান্ত নিবন্ধ এখানে ।

এটি বলেছিল, স্মৃতি বাড়াতে, টার্মিনালে যেখানে আপনি আপনার নোড প্রক্রিয়াটি চালাচ্ছেন:

export NODE_OPTIONS="--max-old-space-size=8192"

যেখানে মানগুলি max-old-space-sizeহতে পারে: [2048, 4096, 8192, 16384]ইত্যাদি

[আপডেট] আরও স্পষ্টতার জন্য আরও উদাহরণ:

export NODE_OPTIONS="--max-old-space-size=5120" #increase to 5gb
export NODE_OPTIONS="--max-old-space-size=6144" #increase to 6gb
export NODE_OPTIONS="--max-old-space-size=7168" #increase to 7gb
export NODE_OPTIONS="--max-old-space-size=8192" #increase to 8gb

# and so on...

# formula:
export NODE_OPTIONS="--max-old-space-size=(X * 1024)" #increase to Xgb

# Note: it doesn't have to be multiples of 1024. 
# max-old-space-size can be any number of memory megabytes(MB) you have available.

14
ধন্যবাদ, 8192 অর্থ 8 জিবি নোট করা উচিত
জেগডসফট

11
এফওয়াইআই, ডিফল্টটি 512 এমবি। আপনার এই পরিমাণটি সরাসরি 10x এ যাওয়ার দরকার নেই, আপনি প্রথমে 512 এবং 5120 এর মধ্যে কিছু চেষ্টা করতে পারেন।
ক্যামেরন হাডসন

ধন্যবাদ এটি সমস্ত ধরণের অ্যাপ্লিকেশনের জন্য মেমরির সমস্যা নিয়ে কাজ করে।
অপরাজেয়মুফি

4
কেবল উল্লেখ করতে চাই - এটি সর্বদা স্মৃতি ফাঁসের সূচক নয়। সম্ভবত আপনি যে লাইব্রেরিটি ব্যবহার করছেন সেটি আগের চেয়ে কিছুটা বেশি মেমরি ব্যবহার করছে। আমাদের next.jsজন্য দ্রুত রিফ্রেশ বৈশিষ্ট্যটি সহ আমাদের অ্যাপটিকে ক্রাশ করা শুরু করে।
ড্যানিয়েল কুক

61

Centos সার্ভার 7 এ একই সমস্যা, তবে এটি আমার সমস্যার সমাধান করেছে:

node --max-old-space-size=X node_modules/@angular/cli/bin/ng build --prod

X = (2048 or 4096 or 8192 o..)স্মৃতির মূল্য কোথায়


4
x এর মান পরিবর্তন করার পরেও ত্রুটি একইরকম থেকে যায়
সোহেল আহমদ

ত্রুটিটি যদি অব্যাহত থাকে, প্রক্রিয়া করার পর্যাপ্ত মেমরি না পাওয়া পর্যন্ত আকারটি বাড়িয়ে রাখুন যা শেষ পর্যন্ত ত্রুটিটি রোধ করবে। কেবলমাত্র আমি খুঁজে পেলাম যে এই ত্রুটিটিটি আমি পেয়েছি ng serveএবং এর একটি অংশে একটি বড় .js ফাইলটি মেমোরিতে লোড করার দরকার পড়ে reference scriptsangular.json
atconway

আমি কি X এর মান 8192 এর চেয়ে বেশি সেট করতে পারি? আমার 32 জিবি র‌্যাম রয়েছে
ডিয়েগো

আমার জন্য, কমান্ড লাইনে সর্বাধিক পুরানো-স্পেস-আকার সরবরাহ করা কার্যকর হয়নি। এই এনভিএম ভিত্তিক নোডের সাথে ইন্টারঅ্যাকশন হতে পারে? পরিবর্তে বাশ স্ক্রিপ্টের ভিতরে, আমি 'NODE_OPTIONS = "- সর্বাধিক-পুরাতন-স্পেস-আকার = 2048" নোড $ এনজি বিল্ড - প্রোড --progress = মিথ্যা' যা 'নোড - ম্যাক্স-ওল্ডের বিপরীতে ব্যবহার করেছিল -স্পেস-আকার = 2048 $ এনজি বিল্ড - প্রোড - প্রোগ্রেশন = মিথ্যা 'যা হয়নি। আমি এখনও জানি না কেন।
সাইমন এইচ

58

আমার ক্ষেত্রে, নোডজেস, সংস্করণ 12.10.0 ইনস্টল করতে এই সমস্যাটি সমাধান করুন


4
একই অবস্থা. আমি সবেমাত্র সংস্করণ এবং এর কাজগুলি পরিবর্তন করেছি।
ব্রুনোস্যাসিও

9
প্রসঙ্গে, নোড 12 এর একটি পৃথক হিপ পরিচালনার কৌশল রয়েছে যা ডিফল্ট ব্যবহারের পরিবর্তে উপলভ্য মেমরির উপর ভিত্তি করে। এখানে আরও বিশদ: ফাউন্ডেশন.নোডজেএস.আর.আন.আন.স.স
ডেরেক ডাউলিং

আমার পক্ষে আর কিছুই কাজ করেনি, এটি ছিল। আপনাকে অনেক ধন্যবাদ :)
হুসেন আলাইদারাস

আমরা নোড 12 এ আপডেট করেছি এবং ত্রুটিটি চলে গেল, নোড 10
রফিউউ

4
@ ডেরাকডলিং ওয়েওব্যাকের কারণটি লিঙ্কটি নষ্ট হয়েছে
গ্রিম গ্রিম

25

ফোরামের একটি পুরানো বার্তায় নির্দেশিত এই সমাধানটি ব্যবহার করে দেখুন: https://forum.ionicframework.com/t/3-7-0-ios-build-with-prod-not-king/107061/24

খোলা node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js

এর থেকে প্রথম লাইনটি পরিবর্তন করুন:

#!/usr/bin/env node

প্রতি

#!/usr/bin/env node --max-old-space-size=4096

1024 এবং 2048 মানগুলি চেষ্টা করে দেখুন, তবে তুলনামূলকভাবে বড় অ্যাপের জন্য আপনার 4096 এর প্রয়োজন হতে পারে।


20

আমি ng buildভিজ্যুয়াল স্টুডিও কোডে কমান্ড কার্যকর করার সময় আমি একই ত্রুটি পেয়েছি । আমি নিম্নলিখিত ক্রমানুসারে উইন্ডোজ কমান্ড লাইনে একই জিনিসটি সম্পাদন করি তবে আমি সফলভাবে তৈরি করতে পারি।

ধাপ 1.

set NODE_OPTIONS=--max_old_space_size=4096

ধাপ ২.

ng build

10

আমি ভিজ্যুয়াল স্টুডিও কোডে নিম্নলিখিত বিবৃতিগুলি সম্পাদন করার সময় আমি একই ত্রুটি বার্তা পেয়েছি। উইন্ডোজ কমান্ড লাইনে যখন আমি একই জিনিসটি কার্যকর করি তখন আমি সফলভাবে তৈরি করতে পারি।

npm install -g increase-memory-limit
increase-memory-limit
set NODE_OPTIONS=--max_old_space_size=4096
ng build -c deploy --build-optimizer --aot --prod --sourceMap

7
node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true

20
এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
এরিক লেসচিনস্কি

7

কিছু কারণে উপরের সমস্ত উত্তর সত্যই আমার পক্ষে কার্যকর হয়নি, আমি আমার সমস্যাটি সমাধানের জন্য নিম্নলিখিতগুলি করেছি:

  1. আমাকে প্রথমে node_modulesফোল্ডারটি মুছতে হয়েছিল
  2. আমার পিসিতে নোড.জেএস পুনরায় ইনস্টল করুন এবং
  3. তারপর npm install

পদক্ষেপ 2 বাধ্যতামূলক নয়। আমি উপরের সমাধানটি চেষ্টা করেছি এবং এটি আমার জন্যও দ্বিতীয় ধাপ ছাড়াই কাজ করেছে
বিশ্লেষক

5

নোড - ম্যাক্স_ল্ড_স্পেস_সাইজ = 4096 ./ নোড_মডিউলস / @angular/cli/bin/ng বিল্ড - প্রোড - বিল্ড-অপ্টিমাইজার

পরামিতি যুক্ত করা --build-optimizer আমার ক্ষেত্রে সমস্যাটি সমাধান করেছে।

হালনাগাদ:

আমি নিশ্চিত না কেন কেবল - বিল্ড-অপ্টিমাইজার যুক্ত করার ফলে সমস্যাটি সমাধান হয় তবে কৌনিক ডক্স অনুসারে এটি এওটি সক্ষম করে ব্যবহার করা উচিত, সুতরাং আপডেট হওয়া কমান্ডটি নীচের মতো হওয়া উচিত

--build-optimizer=true --aot=true

কৌণিক বিল্ড ডক্স


4

আপনার প্রকল্প ফোল্ডারে এই কমান্ডটি চালান। বিল্ডের পরিবর্তে পরিবেশন ব্যবহার করুন

node --max_old_space_size=8000 node_modules/@angular/cli/bin/ng serve  --prod --port=4202

4

লাইনটি প্রতিস্থাপন করুন

"start": "ng serve -o --port 4300 --configuration=en" সঙ্গে

"start": "node --max_old_space_size=5096 node_modules/@angular/cli/bin/ng serve -o --port 4300 --configuration=en"

বিঃদ্রঃ:

  1. পোর্ট - 4300 আপনি কোন পোর্টটি নির্বাচন করেন তার উপর ধ্রুবক নির্ভর করে না।

  2. --max_old_space_size = 5096 খুব ধ্রুবক নয়; 1024,2048,4096 ইত্যাদি কোনও মান


4

আমার ক্ষেত্রে এটি একটি পুনরাবৃত্তি যা সমস্ত স্মৃতি ব্যবহার করার জন্য প্রতিক্রিয়া সৃষ্টি করেছিল।

আমি যখন আমার কোডটি সংশোধন করছিলাম এবং এটি লক্ষ্য করি নি তখন এটি হয়েছিল।

const SumComponent = () => {
  return (
    <>
      <SumComponent />
    </>
  ) 
}

অন্যান্য নোড অ্যাপ্লিকেশনগুলিতে এটির মতো দেখতে পাওয়া যায়:

const someFunction = () => {
  ...
  someFunction(); 
  ...
}

কেন এই সমস্যা ছিল? <> </> << প্রতিক্রিয়া> ফ্রেগমেন্ট> ব্যবহার না করে প্রতিক্রিয়াটিতে বৈধ হওয়া উচিত?
জোয়েলগুল্যান্ডার

প্রতিক্রিয়া 16 এ কোডেহেকার হ্যাঁ এটির নতুন সিনট্যাক্স
গোলস এন্ড গেম্বলস

4
পুনরাবৃত্তিটি এমন একটিতে SumComponentরয়েছে SumComponent(যার মধ্যে একটি SumComponentরয়েছে SumComponent...)
পাথর

3

আমার জন্য এটি ফায়ারবেস প্যাকেজ নিয়ে সমস্যা ছিল।

আপনার প্যাকেজ.জসনের জন্য কেবল "@ ফায়ারবেস / ডাটাবেস" যুক্ত করুন: "0.2.1", নোড_মডিউলগুলি এবং কার্যগুলি পুনরায় ইনস্টল করুন।


2

আমি বিদ্যমান নোড মডিউলটি মুছে ফেলেছি এবং আমার সমস্যা সমাধানের জন্য নীচের কমান্ডগুলি চালিত করেছি

npm install -all
npm audit fix

2

আর একটি অ-কৌণিক উত্তর (এডাব্লুএস এম্প্লিফায় একটি প্রতিক্রিয়া অ্যাপ্লিকেশন তৈরি করতে আমি একই সমস্যার মুখোমুখি ছিলাম)।

ইমানুয়েল দ্বারা উল্লিখিত হিসাবে মনে হচ্ছে এটি নোড ভি 10 বনাম নোড ভি 12 দ্বারা মেমরির যেভাবে পরিচালনা করা হয় তার পার্থক্য থেকে।

আমি কোনও লাভ না করে স্মৃতি বাড়ানোর চেষ্টা করেছি। তবে নোড ভি 12 ব্যবহার করে এটি করেছে।

আপনি এখানে কীভাবে nvm use $VERSION_NODE_12আপনার বিল্ড সেটিংসে যুক্ত করতে পারেন তা এখানে @atlesp দ্বারা ব্যাখ্যা হিসাবে https://github.com/aws-amplify/amplify-console/issues/440#issuecomment-602626451 চিত্র


1

আমার জন্য, সমস্যাটির একটি অতিরিক্ত node_modulesফোল্ডার ছিল যা আমি নামকরণ করেছি node_modules_oldএবং npm installএকটি তাজা উত্পন্ন করার জন্য একটি চালাচ্ছি node_modules। কোনওভাবে বিল্ডটি অবশ্যই node_modules_oldফোল্ডারটি বাছাই করে চলেছে , তাই আমি node_modules_oldসমস্যাটি সমাধানের জন্য ডিরেক্টরি থেকে সরে এসেছি।


1

আপনার নোড সংস্করণটি দেখুন:

   $  node -v

যদি এটির 10.1.1 কিছু হয় তবে আপনাকে নীচের কমান্ডগুলির মাধ্যমে আপনার মূল স্তরের নোড সংস্করণ আপডেট করতে হবে

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash


$ source ~/.nvm/nvm.sh

$ nvm ls

$ nvm install 12.18.1

একবার হয়ে গেলে আপনার টার্মিনাল বা ভিজ্যুয়াল স্টুডিও পুনরায় চালু করুন।

এটি কাজ 100 $

আয়নিক ব্যবহারকারী pls জন্য আপনার প্যাকেজ.জসনে নীচের কোড যুক্ত করুন আয়নিক ব্যবহারকারীর জন্য

 "ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",
    


আপনার বিল্ডিং ওয়েবের মাধ্যমে আসলে এটি কাজ করে তবে app-scriptsআপনি যদি অ্যান্ড্রয়েড বা স্ক্রিপ্টটি ionic cordova build androidকীভাবে তৈরি করেন?
মুহাম্মদ মোছা

0

আপনার ফোল্ডারের নাম পরীক্ষা করুন। যদি আপনার ফোল্ডারের নাম ফাঁক করে থাকে, এই ধরণের সমস্যা উত্পন্ন হবে। স্থান ছাড়াই নাম পরিবর্তন করুন। আশা করি এটি কার্যকর হবে


0

যদি ভিএসকোডে রিঅ্যাক্ট অ্যাপ্লিকেশনটি চলমান অবস্থায় ঘটে থাকে তবে দয়া করে আপনার প্রোপাইপগুলি পরীক্ষা করুন, অপরিজ্ঞাত প্রপাইটিপস একই সমস্যাটিকে বাড়ে।


0

আমার জন্য আমি এই ত্রুটিটি পেয়েছি কারণ আমি আমার কৌণিক.জসন ফাইলে ডিস্ট ফোল্ডারের জন্য আউটপুট পাথে অ্যাক্সেস হারিয়েছি। আমি আপডেট শংসাপত্রের সাথে দূরবর্তী পাথের সাথে পুনরায় সংযুক্ত হওয়ার পরে ত্রুটিটি চলে গেছে।


0

#! / usr / bin / env নোড - ম্যাক্স-ওল্ড-স্পেস-সাইজ = 4096 আইওনিক-অ্যাপ-স্ক্রিপ্ট.জেএস ডিন্টের কাজ

সংশোধন করা হচ্ছে

নোড_মডিউলস / .বিন / আয়নিক-অ্যাপ-স্ক্রিপ্টস সিএমডি

যোগ করে:

@IF বিদ্যমান "% ~ dp0 \ node.exe" ("% ~ dp0 \ node.exe" "% ~ dp0 .. @ আইওনিক \ অ্যাপ-স্ক্রিপ্টস \ বিন \ আয়নিক-অ্যাপ্লিকেশন-স্ক্রিপ্টস.জেএস"% *) ELSE ( @ এসটল্কল @ এসইটি পাঠ্য =% পাঠ্যক্রম:; জেএস; =;% নোড - ম্যাক্স_ল্ড_স্পেস_সাইজ = 4096 "% ~ dp0 .. @ আইওনিক \ অ্যাপ-স্ক্রিপ্টস \ বিন \ আয়নিক-অ্যাপ্লিকেশন-স্ক্রিপ্টস।"% *)

বাগদত্তা কাজ করেছেন


0

আমার জন্য, আমি যখন এসলিন্ট এবং প্রিটিটিয়ার ফিক্স চালাচ্ছি এবং buildআমার প্রতিক্রিয়া প্রকল্পের কোনও ডিরেক্টরি তৈরি করেছি, সমস্ত জিনিস মুছে ফেলার পরে, তখন আমি এই সমস্যার মুখোমুখি হয়েছি । আমার ধারণা এটি অনেক কারণ ফাইল রয়েছে are


0

আমার ধারণা এই ত্রুটিটি পৌঁছানোর প্রচুর উপায় আছে!

আমার দিকে, আমি আমার মধ্যে একটি লুপ ছিল package.json। প্রকল্প এ এর ​​বি প্রকল্পের উপর নির্ভরতা ছিল, এটির প্রকল্পের উপর নির্ভরতা ছিল A.


0

কখনও কখনও সরলতা সাফল্যের মূল চাবিকাঠি। জন্য অনুসন্ধান করুন while (i <= 10000) {}বৃদ্ধি ছাড়া iআপনার কোডে;)


0

আমি আমার প্রকল্পের জন্য নোডেজ, টাইপস্ক্রিপ্ট, সুতা, এনপিএম ইত্যাদির মতো আমার সমস্ত লাইব্রেরি আপডেট করার পরে এই সমস্যাটি চলে গেছে।



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