【问题标题】:JavaScript heap out of memory Angular HerokuJavaScript堆内存不足Angular Heroku
【发布时间】:2021-04-22 16:39:08
【问题描述】:

我有一个 Angular 前端应用程序,我正在尝试将其部署到 Heroku。在本地一切正常,但在尝试部署时出现 JavaScript 堆内存不足错误。

我发现了其他类似的问题推荐:

"start": "node --max_old_space_size=2560 node_modules/.bin/react-scripts start",

但我没有使用 react。

我也见过:

node --max-old-space-size=4096 yourFile.js

但我没有使用节点,我不确定应该为“yourFile.js”放置哪个文件

package.json:

{
  "name": "howling-wolfe",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "heroku-postbuild": "ng build --prod && npm install -g http-server-spa",
    "start": "node --max-old-space-size=4096 main.js",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "postinstall": "ngcc"
  },
  "private": true,
  "dependencies": {
    "@angular-devkit/build-angular": "~0.1100.2",
    "@angular/animations": "~11.0.1",
    "@angular/cdk": "^11.2.6",
    "@angular/cli": "~11.0.2",
    "@angular/common": "~11.0.1",
    "@angular/compiler": "~11.0.1",
    "@angular/compiler-cli": "~11.0.1",
    "@angular/core": "~11.0.1",
    "@angular/flex-layout": "^11.0.0-beta.33",
    "@angular/forms": "~11.0.1",
    "@angular/material": "^11.2.6",
    "@angular/platform-browser": "~11.0.1",
    "@angular/platform-browser-dynamic": "~11.0.1",
    "@angular/router": "~11.0.1",
    "angular-in-memory-web-api": "^0.11.0",
    "rxjs": "~6.6.0",
    "tslib": "^2.0.0",
    "typescript": "~4.0.2",
    "uuid": "^3.4.0",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.1100.2",
    "@angular/cli": "~11.0.2",
    "@angular/compiler-cli": "~11.0.1",
    "@types/jasmine": "~3.6.0",
    "@types/node": "^12.11.1",
    "codelyzer": "^6.0.0",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~5.1.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "protractor": "~7.0.0",
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",
    "typescript": "~4.0.2"
  }
}

不确定还有什么相关的,但如果需要,可以发布更多代码 sn-ps...

有人知道这个问题的 Angular 特定解决方案吗?

提前致谢!

编辑:

将我的包 json 更改为:

"heroku-postbuild": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod && npm install -g http-server-spa",
"start": "ng serve"

仍然出现内存不足错误。

这是完整的日志:

2021-04-22T17:44:20.000000+00:00 app[api]: Build succeeded
2021-04-22T17:44:26.258053+00:00 app[web.1]: - Generating browser application bundles...
2021-04-22T17:45:03.226986+00:00 app[web.1]:
2021-04-22T17:45:03.226995+00:00 app[web.1]: <--- Last few GCs --->
2021-04-22T17:45:03.226995+00:00 app[web.1]:
2021-04-22T17:45:03.226996+00:00 app[web.1]: [21:0x56a6040]    42577 ms: Scavenge 253.1 (257.7) -> 252.6 (257.9) MB, 2.1 / 0.0 ms  (average mu = 0.743, current mu = 0.490) allocation failure
2021-04-22T17:45:03.227002+00:00 app[web.1]: [21:0x56a6040]    43200 ms: Mark-sweep 253.3 (257.9) -> 252.5 (258.4) MB, 600.6 / 0.1 ms  (average mu = 0.620, current mu = 0.464) allocation failure scavenge might not succeed
2021-04-22T17:45:03.227002+00:00 app[web.1]: [21:0x56a6040]    43812 ms: Mark-sweep 253.6 (258.4) -> 252.7 (258.9) MB, 505.5 / 0.1 ms  (average mu = 0.475, current mu = 0.175) allocation failure scavenge might not succeed
2021-04-22T17:45:03.227003+00:00 app[web.1]:
2021-04-22T17:45:03.227019+00:00 app[web.1]:
2021-04-22T17:45:03.227020+00:00 app[web.1]: <--- JS stacktrace --->
2021-04-22T17:45:03.227020+00:00 app[web.1]:
2021-04-22T17:45:03.227042+00:00 app[web.1]: FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory   
2021-04-22T17:45:03.227855+00:00 app[web.1]: 1: 0xa04200 node::Abort() [ng serve]2021-04-22T17:45:03.228461+00:00 app[web.1]: 2: 0x94e4e9 node::FatalError(char const*, char const*) [ng serve]
2021-04-22T17:45:03.229077+00:00 app[web.1]: 3: 0xb7978e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [ng serve]
2021-04-22T17:45:03.229684+00:00 app[web.1]: 4: 0xb79b07 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [ng serve]
2021-04-22T17:45:03.230435+00:00 app[web.1]: 5: 0xd34395  [ng serve]
2021-04-22T17:45:03.231277+00:00 app[web.1]: 6: 0xd64f2e v8::internal::EvacuateNewSpaceVisitor::Visit(v8::internal::HeapObject, int) [ng serve]
2021-04-22T17:45:03.232008+00:00 app[web.1]: 7: 0xd70f66 v8::internal::FullEvacuator::RawEvacuatePage(v8::internal::MemoryChunk*, long*) [ng serve]
2021-04-22T17:45:03.232755+00:00 app[web.1]: 8: 0xd5d14f v8::internal::Evacuator::EvacuatePage(v8::internal::MemoryChunk*) [ng serve]
2021-04-22T17:45:03.233484+00:00 app[web.1]: 9: 0xd5d3c8 v8::internal::PageEvacuationTask::RunInParallel(v8::internal::ItemParallelJob::Task::Runner) [ng serve]  
2021-04-22T17:45:03.234202+00:00 app[web.1]: 10: 0xd4fca9 v8::internal::ItemParallelJob::Run() [ng serve]
2021-04-22T17:45:03.241081+00:00 app[web.1]: 11: 0xd72ec0 void v8::internal::MarkCompactCollectorBase::CreateAndExecuteEvacuationTasks<v8::internal::FullEvacuator, v8::internal::MarkCompactCollector>(v8::internal::MarkCompactCollector*, v8::internal::ItemParallelJob*, v8::internal::MigrationObserver*, long) [ng serve]     
2021-04-22T17:45:03.241798+00:00 app[web.1]: 12: 0xd7375c v8::internal::MarkCompactCollector::EvacuatePagesInParallel() [ng serve]
2021-04-22T17:45:03.242495+00:00 app[web.1]: 13: 0xd73925 v8::internal::MarkCompactCollector::Evacuate() [ng serve]
2021-04-22T17:45:03.243205+00:00 app[web.1]: 14: 0xd85911 v8::internal::MarkCompactCollector::CollectGarbage() [ng serve]
2021-04-22T17:45:03.243916+00:00 app[web.1]: 15: 0xd41c38 v8::internal::Heap::MarkCompact() [ng serve]
2021-04-22T17:45:03.244660+00:00 app[web.1]: 16: 0xd43728 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [ng serve]
2021-04-22T17:45:03.245380+00:00 app[web.1]: 17: 0xd46b6c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [ng serve]
2021-04-22T17:45:03.246026+00:00 app[web.1]: 18: 0xd1524b v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [ng serve]
2021-04-22T17:45:03.246817+00:00 app[web.1]: 19: 0x105b23f v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [ng serve]2021-04-22T17:45:03.247675+00:00 app[web.1]: 20: 0x1401219  [ng serve]
2021-04-22T17:45:03.296152+00:00 app[web.1]: Aborted
2021-04-22T17:45:03.309877+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2021-04-22T17:45:03.310293+00:00 app[web.1]: npm ERR! errno 134
2021-04-22T17:45:03.321025+00:00 app[web.1]: npm ERR! howling-wolfe@0.0.0 start: 
`ng serve`
2021-04-22T17:45:03.321155+00:00 app[web.1]: npm ERR! Exit status 134
2021-04-22T17:45:03.321325+00:00 app[web.1]: npm ERR!
2021-04-22T17:45:03.321457+00:00 app[web.1]: npm ERR! Failed at the howling-wolfe@0.0.0 start script.
2021-04-22T17:45:03.321559+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2021-04-22T17:45:03.335270+00:00 app[web.1]:
2021-04-22T17:45:03.336923+00:00 app[web.1]: npm ERR! A complete log of this run 
can be found in:
2021-04-22T17:45:03.337142+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2021-04-22T17_45_03_322Z-debug.log
2021-04-22T17:45:03.442652+00:00 heroku[web.1]: Process exited with status 134   
2021-04-22T17:45:03.518195+00:00 heroku[web.1]: State changed from starting to crashed
2021-04-22T17:45:03.525632+00:00 heroku[web.1]: State changed from crashed to starting
2021-04-22T17:45:19.028926+00:00 heroku[web.1]: Starting process with command `npm start`
2021-04-22T17:45:22.453342+00:00 app[web.1]:
2021-04-22T17:45:22.453355+00:00 app[web.1]: > howling-wolfe@0.0.0 start /app    
2021-04-22T17:45:22.453355+00:00 app[web.1]: > ng serve
2021-04-22T17:45:22.453355+00:00 app[web.1]:
2021-04-22T17:45:31.328834+00:00 app[web.1]: - Generating browser application bundles...
2021-04-22T17:45:42.091209+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=howlingwolfefe.herokuapp.com request_id=04ca8010-335b-4d92-a193-ad760452dc47 fwd="24.15.212.63" dyno= connect= service= status=503 bytes= protocol=https
2021-04-22T17:46:10.978041+00:00 app[web.1]:
2021-04-22T17:46:10.978047+00:00 app[web.1]: <--- Last few GCs --->
2021-04-22T17:46:10.978047+00:00 app[web.1]:
2021-04-22T17:46:10.978056+00:00 app[web.1]: [21:0x49e1040]    47122 ms: Mark-sweep (reduce) 252.2 (257.4) -> 251.2 (258.7) MB, 510.0 / 0.1 ms  (average mu = 0.522, current mu = 0.121) allocation failure scavenge might not succeed
2021-04-22T17:46:10.978056+00:00 app[web.1]: [21:0x49e1040]    47735 ms: Mark-sweep (reduce) 252.3 (257.7) -> 251.5 (258.9) MB, 573.2 / 0.1 ms  (average mu = 0.341, current mu = 0.066) allocation failure scavenge might not succeed
2021-04-22T17:46:10.978057+00:00 app[web.1]: 
2021-04-22T17:46:10.978100+00:00 app[web.1]:
2021-04-22T17:46:10.978101+00:00 app[web.1]: <--- JS stacktrace --->
2021-04-22T17:46:10.978102+00:00 app[web.1]:
2021-04-22T17:46:10.978126+00:00 app[web.1]: FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory   
2021-04-22T17:46:10.979222+00:00 app[web.1]: 1: 0xa04200 node::Abort() [ng serve]2021-04-22T17:46:10.980548+00:00 app[web.1]: 2: 0x94e4e9 node::FatalError(char const*, char const*) [ng serve]
2021-04-22T17:46:10.982020+00:00 app[web.1]: 3: 0xb7978e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [ng serve]
2021-04-22T17:46:10.984155+00:00 app[web.1]: 4: 0xb79b07 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [ng serve]
2021-04-22T17:46:10.984784+00:00 app[web.1]: 5: 0xd34395  [ng serve]
2021-04-22T17:46:10.990332+00:00 app[web.1]: 6: 0xd64f2e v8::internal::EvacuateNewSpaceVisitor::Visit(v8::internal::HeapObject, int) [ng serve]
2021-04-22T17:46:10.991142+00:00 app[web.1]: 7: 0xd70f66 v8::internal::FullEvacuator::RawEvacuatePage(v8::internal::MemoryChunk*, long*) [ng serve]
2021-04-22T17:46:10.992271+00:00 app[web.1]: 8: 0xd5d14f v8::internal::Evacuator::EvacuatePage(v8::internal::MemoryChunk*) [ng serve]
2021-04-22T17:46:10.992893+00:00 app[web.1]: 9: 0xd5d3c8 v8::internal::PageEvacuationTask::RunInParallel(v8::internal::ItemParallelJob::Task::Runner) [ng serve]  
2021-04-22T17:46:10.993517+00:00 app[web.1]: 10: 0xd4fca9 v8::internal::ItemParallelJob::Run() [ng serve]
2021-04-22T17:46:10.994202+00:00 app[web.1]: 11: 0xd72ec0 void v8::internal::MarkCompactCollectorBase::CreateAndExecuteEvacuationTasks<v8::internal::FullEvacuator, v8::internal::MarkCompactCollector>(v8::internal::MarkCompactCollector*, v8::internal::ItemParallelJob*, v8::internal::MigrationObserver*, long) [ng serve]     
2021-04-22T17:46:10.994879+00:00 app[web.1]: 12: 0xd7375c v8::internal::MarkCompactCollector::EvacuatePagesInParallel() [ng serve]
2021-04-22T17:46:10.995575+00:00 app[web.1]: 13: 0xd73925 v8::internal::MarkCompactCollector::Evacuate() [ng serve]
2021-04-22T17:46:11.000235+00:00 app[web.1]: 14: 0xd85911 v8::internal::MarkCompactCollector::CollectGarbage() [ng serve]
2021-04-22T17:46:11.000867+00:00 app[web.1]: 15: 0xd41c38 v8::internal::Heap::MarkCompact() [ng serve]
2021-04-22T17:46:11.001485+00:00 app[web.1]: 16: 0xd43728 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [ng serve]
2021-04-22T17:46:11.002095+00:00 app[web.1]: 17: 0xd46b6c v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [ng serve]
2021-04-22T17:46:11.002692+00:00 app[web.1]: 18: 0xd1524b v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [ng serve]
2021-04-22T17:46:11.003391+00:00 app[web.1]: 19: 0x105b23f v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [ng serve]2021-04-22T17:46:11.004242+00:00 app[web.1]: 20: 0x1401219  [ng serve]
2021-04-22T17:46:11.092210+00:00 app[web.1]: Aborted
2021-04-22T17:46:11.112815+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2021-04-22T17:46:11.113171+00:00 app[web.1]: npm ERR! errno 134
2021-04-22T17:46:11.125677+00:00 app[web.1]: npm ERR! howling-wolfe@0.0.0 start: 
`ng serve`
2021-04-22T17:46:11.125787+00:00 app[web.1]: npm ERR! Exit status 134
2021-04-22T17:46:11.125923+00:00 app[web.1]: npm ERR!
2021-04-22T17:46:11.126013+00:00 app[web.1]: npm ERR! Failed at the howling-wolfe@0.0.0 start script.
2021-04-22T17:46:11.126092+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2021-04-22T17:46:11.129772+00:00 app[web.1]: 
2021-04-22T17:46:11.136280+00:00 app[web.1]: npm ERR! A complete log of this run 
can be found in:
2021-04-22T17:46:11.136361+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2021-04-22T17_46_11_126Z-debug.log
2021-04-22T17:46:11.205229+00:00 heroku[web.1]: Process exited with status 134   
2021-04-22T17:46:11.262211+00:00 heroku[web.1]: State changed from starting to crashed
2021-04-22T17:46:12.831264+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=howlingwolfefe.herokuapp.com request_id=682bcfc3-dee9-467c-91f9-465367c289ea fwd="24.15.212.63" dyno= connect= service= status=503 bytes= protocol=https
2021-04-22T17:46:12.960639+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=howlingwolfefe.herokuapp.com request_id=5607ba7b-3ed2-428a-afb5-36770d6a8d2e fwd="24.15.212.63" dyno= connect= service= status=503 bytes= protocol=https
2021-04-22T17:46:14.048038+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=howlingwolfefe.herokuapp.com request_id=ae400031-c340-4c29-884a-270c61fa2ebd fwd="24.15.212.63" dyno= connect= service= status=503 bytes= protocol=https

【问题讨论】:

  • 如何部署到heroku?你如何在 heroku 上运行?
  • Angular 应用程序通常在部署之前构建。
  • @kvetis 我正在推送到 github 并单击链接的 heroku 应用程序上的手动部署按钮
  • 显示你的代码。
  • @kvetis 发布了我的 package.json。你还有什么想看的吗?

标签: angular heroku out-of-memory


【解决方案1】:

将构建命令更改为:-

"heroku-postbuild": "node --max_old_space_size=8000 ./node_modules/@angular/cli/bin/ng build --prod && npm install -g http-server-spa"

并将 8000 更改为您想要更改的值。

【讨论】:

  • 这可能行得通,但现在我得到:“错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT”你知道这是什么意思吗?跨度>
  • 你必须增加heroku超时时间。
  • 我该怎么做?
  • 更新了完整日志的问题。使用 8 GB 内存时,我仍然遇到同样的错误
  • 不,这是不同的。因为我相信你的构建现在是成功的。哪个早先失败了?
猜你喜欢
  • 2020-08-07
  • 2018-02-10
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 2017-02-27
  • 2017-10-10
  • 2019-09-10
相关资源
最近更新 更多