itsource

치명적인 오류: 유효하지 않은 히프 제한 부근의 마크 콤팩트 할당 실패 - Ionic 3의 JavaScript 힙 메모리 부족

mycopycode 2022. 9. 4. 21:34
반응형

치명적인 오류: 유효하지 않은 히프 제한 부근의 마크 콤팩트 할당 실패 - Ionic 3의 JavaScript 힙 메모리 부족

3를 하여 3 할 때ionic serve명령어를 실행하면 다음 오류가 나타납니다.

치명적 오류 스크린샷: 힙 제한에 가까운 비활성 마크콤팩트 할당 실패 - JavaScript

Google에서 이 질문을 받은 사용자의 일반 답변은 다음과 같습니다.

이 오류가 발생할 때마다 메모리 누수가 발생하거나 Node.js <= 10과 Node.js > 10의 메모리 관리 방법이 다르기 때문일 수 있습니다.

보통 Node.js에 할당된 메모리를 늘리는 것만으로 프로그램을 실행할 수 있지만 실제 문제는 해결되지 않을 수 있으며 노드 프로세스에서 사용되는 메모리는 할당된 새 메모리를 초과할 수 있습니다.Node.js 프로세스가 실행 또는 업데이트를 시작할 때 Node.js > 10으로 메모리 사용량을 프로파일링하는 것이 좋습니다.

나는 기억이 새었다.다음은 Node.js 메모리누전 디버깅에 관한 훌륭한 기사입니다.

즉, 메모리를 늘리려면 Node.js 프로세스를 실행하는 단말기에서 다음을 수행합니다.

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 5 GB
export NODE_OPTIONS="--max-old-space-size=6144" # Increase to 6 GB
export NODE_OPTIONS="--max-old-space-size=7168" # Increase to 7 GB
export NODE_OPTIONS="--max-old-space-size=8192" # Increase to 8 GB

# and so on...

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

# 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.

max-old-space-size의 현재 값(MB) 참조

max-old-space-size(MB)의 현재 값(정확하지는 않지만 매우 가까운 값)을 표시하려면 단말기에서 실행합니다.

node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))'

제 경우 Node.js 버전12.10.0을 설치하여 이 문제를 해결했습니다.

센트에 대해서도 같은 문제가 있었습니다.OS 서버 7에 의해 문제가 해결되었습니다.

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

서 ★★★★★X = (2048 or 4096 or 8192 o..)메모리의 값입니다.

단말기에 다음과 같이 입력합니다.

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

Node.js에 허용되는 기본 최대 메모리를 초과하면 오류가 발생합니다.이렇게 하면 허용되는 최대 메모리를 늘릴 수 있습니다.

ng buildVisual Studio 코드 ★★★★★★★★그러나 다음 순서로 Windows 명령줄에서 동일한 작업을 실행하면 성공적으로 구축할 수 있습니다.

스텝 1

set NODE_OPTIONS=--max_old_space_size=4096

스텝 2

ng build

포럼의 오래된 메시지에서 지적된 이 솔루션을 사용해 보십시오: 3.7.0: --prod가 동작하지 않는 iOS 빌드

.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이 필요할 수 있습니다.

창문들

제어판에서 시스템 → 고급 시스템 설정 → 환경 변수 → 새로 만들기(사용자 또는 시스템)로 이동합니다.

mceclip0.png

PowerShell에서는 다음 기능을 사용할 수 있습니다.

$env:NODE_OPTIONS="--max-old-space-size=8192"

필요한 경우 이 수를 늘릴 수도 있습니다.대규모 프로젝트에서는 이 용량을 최대 14GB까지 늘려야 합니다.

Linux/macOS

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

내 경우 재귀로 인해 React가 모든 메모리를 소모했습니다.

코드를 리팩터링할 때 이 문제가 발생했습니다.

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

다른 Node.js 응용 프로그램에서는 다음과 같이 표시됩니다.

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

Node.js 12에서 Node.js 14로 업데이트하면 문제가 해결되었습니다.



Node.js 16개입니다.「Node.js」의 「Node.js」의 「Node.js」를 참조해 주세요.

Visual Studio Code에서 다음 문장을 실행해도 동일한 오류 메시지가 나타납니다.그러나 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

어떤 이유에선지 이전의 모든 답변들이 내게는 잘 먹히지 않았다.문제를 해결하기 위해 다음 작업을 수행했습니다.

  1. .node_modules 표시
  2. PC에 Node.js를 재설치하고
  3. npm install
node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true

" " " 추가--build-optimizer문제를 해결했습니다.

node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer

--build-optimizer만 추가하면 문제가 해결되는 이유를 알 수 없지만 Angular 설명서에 따르면 AOT 컴파일이 활성화되어 있어야 하므로 업데이트된 명령어는 다음과 같습니다.

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

각도 빌드 문서

구문 오류(표시되지 않음)가 발생하여 이 오류가 발생하였습니다.

  1. export NODE_OPTIONS="--max-old-space-size=6144" #이(가) 6GB로 증가합니다.

-------------------------------------------------------------------------------------------------------------------------------------------

set NODE_OPTIONS=--max_old_space_size=4096

프로젝트 폴더에서 이 명령을 실행합니다.빌드 대신 서브 사용

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

회선을 바꿉니다.

"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. port: 4300은 선택하는 포트에 따라 일정하지 않습니다.

  2. --max_old_space_size=5096이 너무 일정하지 않습니다.임의의 값 1024,2048,4096 등

「 」를 하는 대신에, 「 」를 사용합니다.ng build이 문제를 해결하기 위해 터미널에서 다음 명령을 실행하였습니다.

 node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod

★★★★★★★★★★★★★★★★★★.ng serve.

이게 제 터미널의 모습입니다.

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS D:\ProjectPath\Project1> node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod

앵귤러에서도 같은 문제에 직면했어요.그리고 나는 썼다.

"serve": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve"

는 「」로 설정합니다.package.json저는 이 문제를 해결했습니다.

그리고 다음 명령을 프로젝트를 실행합니다.

npm run serve

저는 Firebase 패키지에 문제가 있었습니다.

패키지에 대해 "@firebase/database": "0.2.1"만 추가하십시오.json 파일.node_modules를 재설치하면 동작합니다.

는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★node_modules을 름이 that 로 바꾼 node_modules_old 운영도 하고.npm install하게 node_modules어떻게 된 일인지 건물에서 아직도 이 건물에서node_modules_old했습니다.node_modules_old이 문제를 수정하기 위해 디렉토리에서 제외됩니다.

다음 명령어를 실행합니다.

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

기존 Node.js 모듈을 삭제하고 다음 명령을 실행하여 문제를 해결했습니다.

npm install -all
npm audit fix

Node.js 버전을 확인하십시오.

   node -v

10.1.1인 경우 다음 명령을 사용하여 루트 레벨 Node.js 버전을 업데이트해야 합니다.

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

완료되면 터미널 또는 Visual Studio를 다시 시작하십시오.

100달러가 된다.

Ionic 유저의 경우는, 패키지에 이하의 코드를 추가해 주세요.json

Ionic 사용자용

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

Angular가 아닌 다른 답변(AWS Amplify에서 React 애플리케이션을 빌드하는 것과 같은 문제에 직면해 있었습니다).

Emmanuel이 언급한 바와 같이 Node.js v10과 Node.js v10의 메모리 처리방식의 차이에서 비롯된 것으로 보입니다.Node.js v12.

메모리를 늘리려고 했지만 소용없었다.그러나 Node.js v12를 사용하면 가능합니다.

「」를 추가하는 방법을 .nvm use $VERSION_NODE_12Richard의 설명에 따라 빌드 설정을 변경합니다.

frontend:
  phases:
    preBuild:
      commands:
        - nvm use $VERSION_NODE_12
        - npm ci
    build:
      commands:
        - nvm use $VERSION_NODE_12
        - node -v
        - npm run-script build

다음 명령을 실행합니다.

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

이미 얼마나 가지고 있는지 확인하려면:

> node
> v8.getHeapStatistics()
{
  total_heap_size: 6049792,
  total_heap_size_executable: 524288,
  total_physical_size: 5477720,
  total_available_size: 1094444024,
  used_heap_size: 4141728,
  heap_size_limit: 1098907648,
  malloced_memory: 8192,
  peak_malloced_memory: 582752,
  does_zap_garbage: 0,
  number_of_native_contexts: 2,
  number_of_detached_contexts: 0
}

다음에 또 한 번.heap_size_limit: 1098907648

이 오류에 도달하는 방법은 여러 가지가 있을 것 같아요!

옆에는 내 내 in in in in in in in in in in in in in in in in in 에 루프가 있었다.package.json프로젝트 A는 프로젝트 B에 의존하며, 프로젝트 A에 의존합니다.

Windows에서 개발 중 게시 중에 이 문제가 발생할 경우 공식 사이트를 통해 Node.js를 업그레이드하십시오.

메모리 사용량은 새로운 버전의 Node.js에 따라 증가합니다.다만, 어느 정도의 메모리 사용량의 증가는 찾을 수 없었습니다.

그것은 나에게 효과가 있는 유일한 해결책이었다.이 문제를 해결하는 데 주말이 꼬박 걸렸어요.

안정적인 최신 버전의 Node.js v-14.17을 사용하고 있습니다.새로운 Angular Ionic 프로젝트에서도 같은 문제가 발생하여 이전 답변의 대부분을 시도했지만 성공하지 못했습니다.

마지막으로 Node.js 16.4.2 LTS로 업그레이드한 후 이 문제가 해결되었습니다.

저는 angular.json 파일에 설정된 dist 폴더의 출력 경로에 액세스할 수 없었기 때문에 이 오류가 발생하였습니다.업데이트된 자격 증명을 사용하여 원격 경로에 다시 연결한 후 오류가 사라졌습니다.

언급URL : https://stackoverflow.com/questions/53230823/fatal-error-ineffective-mark-compacts-near-heap-limit-allocation-failed-javas

반응형