Heroku-严重错误:堆限制附近的无效标记紧凑分配失败-JavaScript堆内存不足 [英] Heroku - FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

查看:235
本文介绍了Heroku-严重错误:堆限制附近的无效标记紧凑分配失败-JavaScript堆内存不足的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试将我的应用程序部署到Heroku(免费的Dyno)时,我一直收到错误FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory.

Trying to deploy my app to Heroku (free Dyno) I keep getting an Error FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory.

我已经尝试按照Heroku FAQ支持中的建议设置node --optimize_for_size --max_old_space_size=460 --gc_interval=100,但在这里似乎无济于事.

I've already tried to set node --optimize_for_size --max_old_space_size=460 --gc_interval=100 as it's recommended in Heroku FAQ Support but it doesn't seem to help here.

我的应用程序在本地Windows机器上运行良好,但是在Heroku上,无论执行什么操作都会弹出错误.

My app runs well on my local Windows machine but on Heroku, the error pops up no matter what I do.

它不是在启动脚本的阶段而是在tsc编译时崩溃.

It crashes not on the stage of starting the script but on tsc compiling.

也许我在错误的地方或其他地方使用了节点选项,但是由于某种原因,我认为这种方法在我的情况下不起作用.

Maybe I've been using node options in a wrong place or something but I guess this approach doesn't work in my case for some reason.

有人在Heroku上遇到了同样的问题,您是如何解决的?

Has anyone got into the same problem on Heroku and how did you solve it?

记录

2020-05-25T10:10:48.311880+00:00 heroku[web.1]: Starting process with command `npm run heroku`
2020-05-25T10:10:52.925897+00:00 app[web.1]: 
2020-05-25T10:10:52.925919+00:00 app[web.1]: > express-backend@1.0.0 heroku /app
2020-05-25T10:10:52.925937+00:00 app[web.1]: > node --optimize_for_size --max_old_space_size=460 --gc_interval=100&&npm-run-all clean compile copy start
2020-05-25T10:10:52.925938+00:00 app[web.1]: 
2020-05-25T10:10:54.329357+00:00 app[web.1]: 
2020-05-25T10:10:54.329371+00:00 app[web.1]: > express-backend@1.0.0 clean /app
2020-05-25T10:10:54.329372+00:00 app[web.1]: > rm -rf ./dist
2020-05-25T10:10:54.329372+00:00 app[web.1]: 
2020-05-25T10:10:55.482684+00:00 app[web.1]: 
2020-05-25T10:10:55.482694+00:00 app[web.1]: > express-backend@1.0.0 compile /app
2020-05-25T10:10:55.482695+00:00 app[web.1]: > tsc
2020-05-25T10:10:55.482695+00:00 app[web.1]: 
2020-05-25T10:11:13.835222+00:00 app[web.1]: 
2020-05-25T10:11:13.835249+00:00 app[web.1]: <--- Last few GCs --->
2020-05-25T10:11:13.835250+00:00 app[web.1]: lu[70:0x44b09a0]    17193 ms: Mark-sweep 255.8 (257.3) -> 255.0 (257.6) MB, 260.7 / 0.0 ms  (+ 0.0 ms in 3 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 278 ms) (average mu = 0.123, current mu = 0.062) allocation failure[70:0x44b09a0]    17326 ms: Mark-sweep 256.1 (257.6) -> 255.8 (257.6) MB, 83.2 / 0.0 ms  (+ 25.2 ms in 12 steps since start of marking, biggest step 3.2 ms, walltime since start of marking 133 ms) (average mu = 0.145, current mu = 0.185) allocation failur
2020-05-25T10:11:13.835251+00:00 app[web.1]: 
2020-05-25T10:11:13.835251+00:00 app[web.1]: <--- JS stacktrace --->
2020-05-25T10:11:13.835251+00:00 app[web.1]: 
2020-05-25T10:11:13.835252+00:00 app[web.1]: ==== JS stack trace =========================================
2020-05-25T10:11:13.835252+00:00 app[web.1]: 
2020-05-25T10:11:13.835253+00:00 app[web.1]:     0: ExitFrame [pc: 0x13c5b79]
2020-05-25T10:11:13.835253+00:00 app[web.1]: Security context: 0x01b71b3008d1 <JSObject>
2020-05-25T10:11:13.835255+00:00 app[web.1]:     1: addJSDocComment(aka addJSDocComment) [0xd947801e629] [/app/node_modules/typescript/lib/tsc.js:~15330] [pc=0x11ea5812c367](this=0x39366b7804b1 <undefined>,0x0ad037f13561 <Node map = 0xfdad2eb2b19>)
2020-05-25T10:11:13.835256+00:00 app[web.1]:     2: parseTypeMember(aka parseTypeMember) [0xd9478020029] [/app/node_modules/typescript/lib/tsc.js:~16687] [pc=0x11ea5818c740](this=0x39366b7804b1 <undefined>)...
2020-05-25T10:11:13.835256+00:00 app[web.1]: 
2020-05-25T10:11:13.835432+00:00 app[web.1]: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
2020-05-25T10:11:13.835433+00:00 app[web.1]: 
2020-05-25T10:11:13.848262+00:00 app[web.1]: Writing Node.js report to file: report.20200525.101113.70.0.001.json
2020-05-25T10:11:13.848264+00:00 app[web.1]: Node.js report completed
2020-05-25T10:11:13.848539+00:00 app[web.1]:  1: 0xa09830 node::Abort() [node]
2020-05-25T10:11:13.848757+00:00 app[web.1]:  2: 0xa09c55 node::OnFatalError(char const*, char const*) [node]
2020-05-25T10:11:13.852130+00:00 app[web.1]:  3: 0xb7d71e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]
2020-05-25T10:11:13.852131+00:00 app[web.1]:  4: 0xb7da99 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]
2020-05-25T10:11:13.852132+00:00 app[web.1]:  5: 0xd2a1f5  [node]
2020-05-25T10:11:13.852132+00:00 app[web.1]:  6: 0xd2a886 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node]
2020-05-25T10:11:13.852133+00:00 app[web.1]:  7: 0xd37105 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]
2020-05-25T10:11:13.852542+00:00 app[web.1]:  8: 0xd37fb5 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]
2020-05-25T10:11:13.856595+00:00 app[web.1]:  9: 0xd3aa6c v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]
2020-05-25T10:11:13.856597+00:00 app[web.1]: 10: 0xd0163b v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]
2020-05-25T10:11:13.856598+00:00 app[web.1]: 11: 0x104300e v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node]
2020-05-25T10:11:13.856599+00:00 app[web.1]: 12: 0x13c5b79  [node]
2020-05-25T10:11:13.883615+00:00 app[web.1]: Aborted
2020-05-25T10:11:13.887422+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-05-25T10:11:13.887588+00:00 app[web.1]: npm ERR! errno 134
2020-05-25T10:11:13.888930+00:00 app[web.1]: npm ERR! express-backend@1.0.0 compile: `tsc`
2020-05-25T10:11:13.889100+00:00 app[web.1]: npm ERR! Exit status 134
2020-05-25T10:11:13.889247+00:00 app[web.1]: npm ERR! 
2020-05-25T10:11:13.889249+00:00 app[web.1]: npm ERR! Failed at the express-backend@1.0.0 compile script.
2020-05-25T10:11:13.889411+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-05-25T10:11:13.899422+00:00 app[web.1]: 
2020-05-25T10:11:13.900471+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-05-25T10:11:13.901218+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2020-05-25T10_11_13_890Z-debug.log
2020-05-25T10:11:13.913416+00:00 app[web.1]: ERROR: "compile" exited with 134.
2020-05-25T10:11:13.919863+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-05-25T10:11:13.920329+00:00 app[web.1]: npm ERR! errno 1
2020-05-25T10:11:13.921443+00:00 app[web.1]: npm ERR! express-backend@1.0.0 heroku: `node --optimize_for_size --max_old_space_size=460 --gc_interval=100&&npm-run-all clean compile copy start`
2020-05-25T10:11:13.921603+00:00 app[web.1]: npm ERR! Exit status 1
2020-05-25T10:11:13.921779+00:00 app[web.1]: npm ERR! 
2020-05-25T10:11:13.921933+00:00 app[web.1]: npm ERR! Failed at the express-backend@1.0.0 heroku script.
2020-05-25T10:11:13.922075+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-05-25T10:11:13.934678+00:00 app[web.1]: 
2020-05-25T10:11:13.935097+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-05-25T10:11:13.935307+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2020-05-25T10_11_13_922Z-debug.log
2020-05-25T10:11:14.015702+00:00 heroku[web.1]: Process exited with status 1

package.json

package.json

{
  "name": "express-backend",
  "version": "1.0.0",
  "description": "",
  "main": "./dist/server.js",
  "scripts": {
    "prebuild": "npm-run-all -s clean",
    "predev": "npm-run-all -s clean",
    "clean": "rm -rf ./dist",
    "start": "node --optimize_for_size --max_old_space_size=460 --gc_interval=100 ./dist/server.js",
    "compile": "tsc",
    "copy": "cpy src/graphql/schemas/*.graphql dist/graphql/schemas --no-overwrite",
    "build": "tsc&&npm run copy",
    "dev": "tsc-watch --onSuccess \"npm-run-all -s copy start\"",
    "heroku": "node --optimize_for_size --max_old_space_size=460 --gc_interval=100&&npm-run-all clean compile copy start"
  },
  "config": {
    "node-options": "--optimize_for_size --max_old_space_size=460 --gc_interval=100"
  },
  "engines": {
    "node": "12.16.3",
    "npm": "6.14.4"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/bcryptjs": "2.4.2",
    "@types/compression": "1.7.0",
    "@types/crypto-js": "3.1.44",
    "@types/express": "4.17.3",
    "@types/graphql": "14.5.0",
    "@types/js-base64": "2.3.1",
    "@types/jsonwebtoken": "8.3.9",
    "@types/mongoose": "5.7.8",
    "@types/validator": "13.0.0",
    "apollo-server-express": "2.11.0",
    "bcryptjs": "2.4.3",
    "body-parser": "1.19.0",
    "compression": "1.7.4",
    "cors": "2.8.5",
    "crypto-js": "4.0.0",
    "dotenv": "8.2.0",
    "express": "4.17.1",
    "googleapis": "39.2.0",
    "graphql": "14.6.0",
    "graphql-middleware": "4.0.2",
    "graphql-shield": "7.2.3",
    "graphql-tools": "4.0.7",
    "js-base64": "2.5.2",
    "jsonwebtoken": "8.5.1",
    "merge-graphql-schemas": "1.7.6",
    "moment": "2.24.0",
    "mongoose": "5.9.6",
    "npm-run-all": "4.1.5",
    "password-validator": "5.0.3",
    "rimraf": "3.0.2",
    "simple-crypto-js": "2.2.0",
    "validator": "13.0.0",
    "winston": "3.2.1",
    "typescript": "3.8.3",
    "cpy-cli": "^3.1.1"
  },
  "devDependencies": {
    "tsc-watch": "^4.2.3"
  }
}

Procfile

web: npm run heroku

推荐答案

我在部署角度应用程序时遇到了问题,我通过在package.json中添加node和npm版本来解决该问题,例如:

I had this problem deploying angular app, I fixed it by adding node and npm versions in my package.json like:

"engines": {"node": "12.x","npm": "6.x" }

这篇关于Heroku-严重错误:堆限制附近的无效标记紧凑分配失败-JavaScript堆内存不足的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆