npm run dev启动服务内存不够bug修复

67 阅读4分钟

报错提示


<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----

 1: 0x100c3d334 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
 2: 0x100df9e84 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
 3: 0x101007cd8 v8::internal::Heap::GarbageCollectionReasonToString(v8::internal::GarbageCollectionReason) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
 4: 0x101006640 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
 5: 0x100ffc4dc v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
 6: 0x100ffcd34 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
 7: 0x100fe1214 v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
 8: 0x1013ee34c v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
 9: 0x101780c44 Builtins_CEntry_Return1_ArgvOnStack_NoBuiltinExit [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
10: 0x1016fa8a8 Builtins_GrowFastSmiOrObjectElements [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
11: 0x1078baa40
12: 0x107579094
13: 0x10173326c Builtins_LoadIC [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
14: 0x10762828c
15: 0x1016f5708 construct_stub_create_deopt_addr [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
16: 0x107628658
17: 0x1017a7fb4 Builtins_ArrayReduce [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
18: 0x1016f83e4 Builtins_InterpreterEntryTrampoline [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
19: 0x1016f83e4 Builtins_InterpreterEntryTrampoline [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
20: 0x10172f210 Builtins_AsyncFunctionAwaitResolveClosure [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
21: 0x1017dcfb8 Builtins_PromiseFulfillReactionJob [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
22: 0x10171eb94 Builtins_RunMicrotasks [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
23: 0x1016f63f4 Builtins_JSRunMicrotasksEntry [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
24: 0x100f72748 v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
25: 0x100f73074 v8::internal::(anonymous namespace)::InvokeWithTryCatch(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
26: 0x100f73260 v8::internal::Execution::TryRunMicrotasks(v8::internal::Isolate*, v8::internal::MicrotaskQueue*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
27: 0x100f9df50 v8::internal::MicrotaskQueue::RunMicrotasks(v8::internal::Isolate*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
28: 0x100f9e6dc v8::internal::MicrotaskQueue::PerformCheckpoint(v8::Isolate*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
29: 0x100b54c84 node::InternalCallbackScope::Close() [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
30: 0x100b54fb4 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/xxx/.nvm/versions/node/v20.19.0/bin/node]
31: 0x100b692f0 node::AsyncWrap::MakeCallback(v8::Local<v8::Function>, int, v8::Local<v8::Value>*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
32: 0x100c42998 node::fs::FSReqCallback::Reject(v8::Local<v8::Value>) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
33: 0x100c4322c node::fs::FSReqAfterScope::Reject(uv_fs_s*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
34: 0x100c4363c node::fs::AfterStat(uv_fs_s*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
35: 0x100c361c8 node::MakeLibuvRequestCallback<uv_fs_s, void (*)(uv_fs_s*)>::Wrapper(uv_fs_s*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
36: 0x1016d3e34 uv__work_done [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
37: 0x1016d785c uv__async_io [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
38: 0x1016ea504 uv__io_poll [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
39: 0x1016d7dc4 uv_run [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
40: 0x100b557e8 node::SpinEventLoopInternal(node::Environment*) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
41: 0x100c8048c node::NodeMainInstance::Run() [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
42: 0x100bffa78 node::Start(int, char**) [/Users/xxx/.nvm/versions/node/v20.19.0/bin/node]
43: 0x189006b98 start [/usr/lib/dyld]
[1]    46009 abort      npm run dev

我在启动nuxt应用的时候报了这个错误,看起来是因为我的项目过于庞大,导致内存不够了,一般来讲我们64系统给的内存1.7g左右,如果你的应用超过了这个内存,就要自己设置内存大小了。

这个内存限制主要是v8引擎的限制,v8会给每个进程分配一定的最大堆内存,避免单个进程消耗过多内存。

解决办法就是增加内存。

可以通过环境环境修改内存大小。

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

然后再执行

npm run dev

这样就能启动了。