I am facing JavaScript heap out of memory during build in my react typescript applications. We used create-react-app to build the application.
When we bypass the type checking build is working fine. Looks like issue happens with the type checking.
I have increase the memory size upto
–max-old-space-size=8192
Tried increased the memory limit using ForkTsCheckerWebpackPlugin
new ForkTsCheckerWebpackPlugin({
typescript: {
memoryLimit: 4096, // Increase the memory limit (in MB)
},
}),
Nothing worked for me.
Here is my tsconfig.json
{
"extends": "./tsconfig.paths.json",
"compilerOptions": {
"baseUrl": "./src/",
"target": "es5",
"typeRoots": ["./src/"],
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"noImplicitAny": false,
"noFallthroughCasesInSwitch": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "build", "dist"]
}
Error
<--- Last few GCs --->
[63135:0x160008000] 169406 ms: Mark-sweep (reduce) 2044.6 (2084.2) -> 2043.4 (2084.5) MB, 580.8 / 0.0 ms (average mu = 0.207, current mu = 0.036) allocation failure; scavenge might not succeed
[63135:0x160008000] 170002 ms: Mark-sweep (reduce) 2044.6 (2084.5) -> 2042.9 (2084.5) MB, 590.6 / 0.0 ms (average mu = 0.116, current mu = 0.011) allocation failure; scavenge might not succeed
<--- JS stacktrace --->
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x102889770 node::Abort() [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
2: 0x102889954 node::ModifyCodeGenerationFromStrings(v8::Local<v8::Context>, v8::Local<v8::Value>, bool) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
3: 0x1029e01a8 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
4: 0x102b8ab30 v8::internal::EmbedderStackStateScope::EmbedderStackStateScope(v8::internal::Heap*, v8::internal::EmbedderStackStateScope::Origin, cppgc::EmbedderStackState) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
5: 0x102b8e71c v8::internal::Heap::CollectSharedGarbage(v8::internal::GarbageCollectionReason) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
6: 0x102b8b730 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::internal::GarbageCollectionReason, char const*, v8::GCCallbackFlags) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
7: 0x102b88a30 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
8: 0x102b7d56c v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
9: 0x102b7ddb0 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
10: 0x102b63d30 v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
11: 0x102f04490 v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
12: 0x10325110c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
13: 0x10884a540
14: 0x109597f94
15: 0x108877044
16: 0x109598c38
17: 0x109598074
18: 0x108877044
19: 0x108ce1428
20: 0x108255e68
21: 0x1090d5a10
22: 0x1090d5d60
23: 0x109315650
24: 0x1091bbea0
25: 0x1095baae0
26: 0x108291834
27: 0x1090f89e0
28: 0x108cf1460
29: 0x1090cba8c
30: 0x1090c8eec
31: 0x1095d7248
32: 0x1090e4f34
33: 0x1081bade8
34: 0x108cf0a2c
35: 0x1088254bc
36: 0x10882ff7c
37: 0x108ce37b0
38: 0x1086f7854
39: 0x1082387dc
40: 0x1080d6394
41: 0x108ace978
42: 0x1086daa44
43: 0x10931e278
44: 0x1080d6394
45: 0x1091b8998
46: 0x1096ee5d0
47: 0x1091a7e6c
48: 0x1091b61a8
49: 0x1082317b0
50: 0x1081b3340
51: 0x10930ea3c
52: 0x1091a71cc
53: 0x108b0e80c
54: 0x1080f6614
55: 0x108b0d19c
56: 0x10952b4bc
57: 0x1087e50ec
58: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
59: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
60: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
61: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
62: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
63: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
64: 0x1032100d0 Builtins_GeneratorPrototypeNext [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
65: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
66: 0x10329ac88 Builtins_PromiseConstructor [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
67: 0x1031d9914 Builtins_JSBuiltinsConstructStub [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
68: 0x1032e6cb8 Builtins_ConstructHandler [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
69: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
70: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
71: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
72: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
73: 0x1032100d0 Builtins_GeneratorPrototypeNext [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
74: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
75: 0x10329ac88 Builtins_PromiseConstructor [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
76: 0x1031d9914 Builtins_JSBuiltinsConstructStub [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
77: 0x1032e6cb8 Builtins_ConstructHandler [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
78: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
79: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
80: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
81: 0x10323cb00 Builtins_SetPrototypeForEach [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
82: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
83: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
84: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
85: 0x1031dc198 Builtins_InterpreterEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
86: 0x1031da4d0 Builtins_JSEntryTrampoline [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
87: 0x1031da164 Builtins_JSEntry [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
88: 0x102b0c928 v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
89: 0x102b0be68 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
90: 0x1029fc048 v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
91: 0x1027ccd08 node::InternalCallbackScope::Close() [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
92: 0x1027ccfd0 node::InternalMakeCallback(node::Environment*, v8::Local<v8::Object>, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*, node::async_context) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
93: 0x1027e2484 node::AsyncWrap::MakeCallback(v8::Local<v8::Function>, int, v8::Local<v8::Value>*) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
94: 0x10293d7b0 node::StreamBase::CallJSOnreadMethod(long, v8::Local<v8::ArrayBuffer>, unsigned long, node::StreamBase::StreamBaseJSChecks) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
95: 0x10293ecb0 node::EmitToJSStreamListener::OnStreamRead(long, uv_buf_t const&) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
96: 0x102942d94 node::LibuvStreamWrap::OnUvRead(long, uv_buf_t const*) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
97: 0x102943500 node::LibuvStreamWrap::ReadStart()::$_1::__invoke(uv_stream_s*, long, uv_buf_t const*) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
98: 0x1031c6950 uv__stream_io [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
99: 0x1031cea84 uv__io_poll [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
100: 0x1031bc9a0 uv_run [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
101: 0x1027cd6e0 node::SpinEventLoop(node::Environment*) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
102: 0x1028c5e1c node::NodeMainInstance::Run() [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
103: 0x10285630c node::LoadSnapshotDataAndRun(node::SnapshotData const**, node::InitializationResult const*) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
104: 0x1028565c4 node::Start(int, char**) [/Users/gtm/.nvm/versions/node/v18.20.4/bin/node]
105: 0x18db9b154 start [/usr/lib/dyld]
RpcIpcMessagePortClosedError: Process 63135 exited [SIGABRT].
Issues checking service aborted - probably out of memory. Check the `memoryLimit` option in the ForkTsCheckerWebpackPlugin configuration.
If increasing the memory doesn't solve the issue, it's most probably a bug in the TypeScript or EsLint.
RpcIpcMessagePortClosedError: Process 63135 exited [SIGABRT].
Issues checking service aborted - probably out of memory. Check the `memoryLimit` option in the ForkTsCheckerWebpackPlugin configuration.
If increasing the memory doesn't solve the issue, it's most probably a bug in the TypeScript or EsLint.
How to fix this heap memory issue?