首页 > 解决方案 > 如何使用 Next.js 为 Javascript 堆分配更多内存

问题描述

我们的 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

具体来说:我注意到一些类似的问题 但是 当我们尝试运行像这样的 Node 命令时:(node --max_old_space_size=4096 node_modules/.bin/react-scripts start其他地方提出的解决方案)应该为 Node 分配更多内存,我们遇到了问题。似乎这会为某些函数分配额外的内存(在为特定文件分配更多内存时我也看到过这种方法)但是当你运行一个命令时我不确定如何npm run dev去做开发服务器。

有什么想法吗?

我们技术堆栈的核心部分

标签: javascriptnode.jsreactjsnext.js

解决方案


运行npm run dev只需调用 package.json 文件中的 dev 脚本。

这应该是这样的:

"dev": "next",

您可以添加您希望发送到节点的任何标志,例如:

"dev": "NODE_OPTIONS=\"--max_old_space_size=4096\" next",

推荐阅读