如何使用 Next.js 为 Javascript 堆分配更多内存

Dav*_*nes 9 javascript node.js reactjs next.js

我们的 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
Run Code Online (Sandbox Code Playgroud)

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

有什么想法吗?

我们技术栈的核心部分

  • "@material-ui/core": "^4.0.0-alpha.8",
  • "@stripe/react-stripe-js": "^1.1.2",
  • "cors": "^2.8.5",
  • "firebase": "^7.14.4",
  • "下一个": "^9.5.2",
  • “反应”:“^ 16.8.6”,
  • “反应查询”:“^ 2.12.1”,

Dav*_*haw 10

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

这应该是这样的:

"dev": "next",
Run Code Online (Sandbox Code Playgroud)

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

"dev": "NODE_OPTIONS=\"--max_old_space_size=4096\" next",
Run Code Online (Sandbox Code Playgroud)

  • 您可能应该使用“NODE_OPTIONS=--max-old-space-size=4096 next”,因为“--max_old_space_size”是一个节点选项,而不是下一个选项。请参阅 https://nodejs.org/api/cli.html#cli_node_options_options (2认同)