【发布时间】:2020-12-30 09:47:29
【问题描述】:
我们的 Next.js 应用程序的开发环境有问题。
问题
我们的 Javascript 堆经常耗尽内存。以下是具体的错误日志:
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: 0x10003ae75 node::Abort() [/usr/local/bin/node]
2: 0x10003b07f node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
3: 0x1001a7ae5 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
4: 0x100572ef2 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
5: 0x10057c3f4 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
6: 0x10054e1e4 v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/local/bin/node]
7: 0x10067fd99 v8::internal::String::SlowFlatten(v8::internal::Handle<v8::internal::ConsString>, v8::internal::PretenureFlag) [/usr/local/bin/node]
8: 0x1001c587d v8::String::Utf8Length() const [/usr/local/bin/node]
9: 0x10004e7b6 node::Buffer::(anonymous namespace)::ByteLengthUtf8(v8::FunctionCallbackInfo<v8::Value> const&) [/usr/local/bin/node]
10: 0x2b9f4f0078a1
Abort trap: 6
特别是:我注意到aresomewhatsimilar 的问题,但是当我们尝试运行像这样的 Node 命令时:node --max_old_space_size=4096 node_modules/.bin/react-scripts start(其他地方提出的解决方案),它应该为 Node 分配更多内存,我们遇到了问题。似乎这会为某些函数分配额外的内存(在为特定文件分配更多内存时我也看到过这种方法)但是当你运行像npm run dev 这样的命令时我不确定如何做到这一点启动您的开发服务器。
有什么想法吗?
我们技术栈的核心部分
- "@material-ui/core": "^4.0.0-alpha.8",
- "@stripe/react-stripe-js": "^1.1.2",
- “cors”:“^2.8.5”,
- “火力基地”:“^7.14.4”,
- “下一个”:“^9.5.2”,
- “反应”:“^16.8.6”,
- “反应查询”:“^2.12.1”,
【问题讨论】:
-
我不知道你的应用背景和服务器统计信息,但我的想法是你最好定位你的内存泄漏。可能是循环引用(同一组件内的组件)。无限内存不存在,你不能永远增加内存,所以它会再次崩溃。
标签: javascript node.js reactjs next.js