เมื่อฉันเรียกใช้โครงการไอออนิก 3 โดยใช้คำสั่ง "ไอออนิกให้บริการ" กว่าจะได้รับข้อผิดพลาดนี้:
คำตอบ:
สำหรับคำตอบทั่วไปที่ไม่ใช่เชิงมุมสำหรับผู้ที่ถามคำถามนี้จาก Google:
ทุกครั้งที่คุณพบข้อผิดพลาดนี้อาจเป็นเพราะหน่วยความจำรั่วหรือความแตกต่างระหว่างวิธีที่โหนด <= 10 และโหนด> 10 จัดการหน่วยความจำ โดยปกติแล้วเพียงแค่เพิ่มหน่วยความจำที่จัดสรรให้กับ Node จะทำให้โปรแกรมของคุณทำงานได้แต่อาจไม่สามารถแก้ปัญหาที่แท้จริงได้และหน่วยความจำที่ใช้โดยกระบวนการโหนดอาจยังเกินหน่วยความจำใหม่ที่คุณจัดสรร ฉันขอแนะนำให้ใช้หน่วยความจำโปรไฟล์ในกระบวนการโหนดของคุณเมื่อเริ่มทำงานหรืออัปเดตเป็นโหนด> 10
ฉันมีความทรงจำรั่วไหล นี่คือบทความที่ยอดเยี่ยมเกี่ยวกับการดีบักการรั่วไหลของหน่วยความจำในโหนด
ที่กล่าวว่าเพื่อเพิ่มหน่วยความจำในเทอร์มินัลที่คุณเรียกใช้กระบวนการโหนดของคุณ:
export NODE_OPTIONS="--max-old-space-size=8192"
โดยที่ค่าmax-old-space-size
สามารถเป็น: [2048, 4096, 8192, 16384]
ฯลฯ
[UPDATE] ตัวอย่างเพิ่มเติมเพื่อความชัดเจนเพิ่มเติม:
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.
next.js
เริ่มทำให้แอปของเราล่มด้วยคุณสมบัติการรีเฟรชอย่างรวดเร็ว
ในกรณีของฉันแก้ไขปัญหานี้ในการติดตั้ง NodeJs เวอร์ชัน 12.10.0
ปัญหาเดียวกันบนเซิร์ฟเวอร์ centos 7 แต่สิ่งนี้ช่วยแก้ปัญหาของฉันได้:
node --max-old-space-size=X node_modules/@angular/cli/bin/ng build --prod
X = (2048 or 4096 or 8192 o..)
ค่าของหน่วยความจำอยู่ที่ไหน
ng serve
และไฟล์. js ขนาดใหญ่ที่อ้างอิงในscripts
ส่วนของไฟล์angular.json
นั้นจำเป็นต้องโหลดลงในหน่วยความจำ
ลองใช้วิธีนี้ซึ่งระบุไว้ในข้อความเก่าในฟอรัม: https://forum.ionicframework.com/t/3-7-0-ios-build-with-prod-not-working/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
ฉันได้รับข้อผิดพลาดเดียวกันเมื่อฉันรันng build
คำสั่งในรหัส Visual Studio แต่ฉันสามารถสร้างได้สำเร็จเมื่อฉันรันสิ่งเดียวกันในบรรทัดคำสั่งของ Windows ตามลำดับต่อไปนี้
ขั้นตอนที่ 1.
set NODE_OPTIONS=--max_old_space_size=4096
ขั้นตอนที่ 2.
ng build
ฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกันเมื่อฉันรันคำสั่งต่อไปนี้ในรหัส Visual Studio แต่ฉันสามารถสร้างได้สำเร็จเมื่อฉันรันสิ่งเดียวกันในบรรทัดคำสั่งของ windows
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
node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true
ด้วยเหตุผลบางประการที่คำตอบข้างต้นไม่ได้ผลสำหรับฉันฉันได้ดำเนินการต่อไปนี้เพื่อแก้ไขปัญหาของฉัน:
node_modules
โฟลเดอร์ก่อนnpm install
แทนที่บรรทัด
"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"
บันทึก:
พอร์ต - 4300 ไม่คงที่ขึ้นอยู่กับพอร์ตที่คุณเลือก
--max_old_space_size = 5096 ไม่คงที่เกินไป ค่าใดก็ได้ 1024,2048,4096 เป็นต้น
ในกรณีของฉันมันเป็นการเรียกซ้ำที่ทำให้เกิดการตอบสนองเพื่อใช้หน่วยความจำทั้งหมด
เหตุการณ์นี้เกิดขึ้นเมื่อฉันกำลังปรับรหัสใหม่และไม่สังเกตเห็นสิ่งนี้
const SumComponent = () => {
return (
<>
<SumComponent />
</>
)
}
ในแอปโหนดอื่น ๆ อาจมีลักษณะดังนี้:
const someFunction = () => {
...
someFunction();
...
}
SumComponent
ประกอบด้วย a SumComponent
(ซึ่งมี a SumComponent
ซึ่งมีSumComponent
... )
โหนด --max_old_space_size = 4096 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer
การเพิ่มพารามิเตอร์ช่วย--build-optimizer
แก้ปัญหาในกรณีของฉัน
อัปเดต:
ฉันไม่แน่ใจว่าทำไมการเพิ่มเพียง --build-optimizer จึงแก้ปัญหาได้ แต่ตามเอกสารเชิงมุมควรใช้กับ aot ที่เปิดใช้งานดังนั้นคำสั่งที่อัปเดตควรเป็นดังนี้
--build-optimizer=true --aot=true
เรียกใช้คำสั่งนี้ในโฟลเดอร์โครงการของคุณ ใช้บริการแทนการสร้าง
node --max_old_space_size=8000 node_modules/@angular/cli/bin/ng serve --prod --port=4202
สำหรับฉันมันเป็นปัญหากับแพ็คเกจ firebase
เพิ่มเฉพาะ "@ firebase / database": "0.2.1" สำหรับ package.json ของคุณติดตั้ง node_modules ใหม่และใช้งานได้
ฉันได้ลบโมดูลโหนดที่มีอยู่แล้วและเรียกใช้คำสั่งด้านล่างเพื่อแก้ไขปัญหาของฉัน
npm install -all
npm audit fix
โปรดตรวจสอบเวอร์ชันโหนดของคุณ:
$ 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 $
สำหรับผู้ใช้ไอออนิกกรุณาเพิ่มรหัสด้านล่างใน package.json ของคุณ
"ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",
app-scripts
แต่ถ้าคุณสร้าง android หรือสคริปต์เป็นionic cordova build android
อย่างไร
อีกคำตอบที่ไม่ใช่เชิงมุม (ฉันประสบปัญหาเดียวกันกับการสร้างแอปตอบกลับบน AWS Amplify)
ตามที่เอ็มมานูเอลกล่าวไว้ดูเหมือนว่ามันมาจากความแตกต่างในวิธีการจัดการหน่วยความจำโดยโหนด v10 กับโหนด v12
ฉันพยายามเพิ่มหน่วยความจำโดยไม่มีประโยชน์ แต่การใช้โหนด v12 ทำได้
ตรวจสอบว่าคุณสามารถเพิ่มnvm use $VERSION_NODE_12
การตั้งค่าการสร้างของคุณได้อย่างไรตามที่ Richard อธิบายไว้
frontend:
phases:
preBuild:
commands:
- nvm use $VERSION_NODE_12
- npm ci
build:
commands:
- nvm use $VERSION_NODE_12
- node -v
- npm run-script build
สำหรับฉันปัญหาคือมีnode_modules
โฟลเดอร์พิเศษที่ฉันเปลี่ยนชื่อnode_modules_old
และเรียกใช้npm install
เพื่อสร้างไฟล์node_modules
. ยังไงก็ตามบิลด์ยังต้องรับnode_modules_old
โฟลเดอร์อยู่ดังนั้นฉันจึงย้ายnode_modules_old
ออกจากไดเร็กทอรีเพื่อแก้ไขปัญหา
เพียงพิมพ์สิ่งนี้ในเทอร์มินัล:
export NODE_OPTIONS="--max-old-space-size=8192"
สำหรับฉันฉันมีข้อผิดพลาดทางไวยากรณ์ (ซึ่งไม่ปรากฏขึ้น) และทำให้เกิดข้อผิดพลาดนี้
ตรวจสอบชื่อโฟลเดอร์ของคุณ หากชื่อโฟลเดอร์ของคุณมีช่องว่างปัญหาประเภทนี้จะสร้างขึ้น เปลี่ยนชื่อโดยไม่เว้นวรรค หวังว่ามันจะได้ผล
หากสิ่งนี้เกิดขึ้นกับการเรียกใช้แอปพลิเคชัน React บน VSCode โปรดตรวจสอบ propTypes ของคุณ Proptypes ที่ไม่ได้กำหนดจะนำไปสู่ปัญหาเดียวกัน
สำหรับฉันฉันได้รับข้อผิดพลาดนี้เนื่องจากฉันสูญเสียการเข้าถึงเส้นทางเอาต์พุตสำหรับโฟลเดอร์ dist ที่ตั้งไว้ในไฟล์ angular.json ของฉัน หลังจากที่ฉันเชื่อมต่อกับเส้นทางระยะไกลอีกครั้งด้วยข้อมูลรับรองที่อัปเดตแล้วข้อผิดพลาดก็หายไป
#! / usr / bin / env node --max-old-space-size = 4096 ในไอออนิก -app-scripts.js ทำงาน dint
กำลังแก้ไข
node_modules / .bin / ionic-app-scripts.cmd
โดยการเพิ่ม:
@IF มีอยู่ "% ~ dp0 \ node.exe" ("% ~ dp0 \ node.exe" "% ~ dp0 .. @ ionic \ app-scripts \ bin \ ionic-app-scripts.js"% *) ELSE ( @SETLOCAL @SET PATHEXT =% PATHEXT:;. JS; =;% node --max_old_space_size = 4096 "% ~ dp0 .. @ ionic \ app-scripts \ bin \ ionic-app-scripts.js"% *)
ทำงานเป็นคู่หมั้น
สำหรับฉันฉันพบปัญหานี้เมื่อเรียกใช้ eslint และการแก้ไขที่สวยกว่าและจัดรูปแบบด้วยbuild
ไดเร็กทอรีในโครงการ React ของฉันหลังจากลบออกทุกอย่างก็ใช้ได้ ฉันเดาว่าเป็นเพราะมีไฟล์มากเกินไป
ฉันเดาว่ามีหลายวิธีในการเข้าถึงข้อผิดพลาดนี้!
ด้านข้างของฉันฉันมีห่วงในpackage.json
ไฟล์. โครงการ A มีการพึ่งพาโครงการ B ซึ่งมีการพึ่งพาโครงการ A
บางครั้งความเรียบง่ายเป็นกุญแจสู่ความสำเร็จ ค้นหาwhile (i <= 10000) {}
โดยไม่ต้องเพิ่มi
รหัสของคุณ;)
ปัญหานี้หมดไปหลังจากที่ฉันอัปเดตไลบรารีทั้งหมดของฉันเช่น nodejs, typescript, yarn, npm และอื่น ๆ สำหรับโครงการของฉัน