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

wlp8pajw  于 2022-11-22  发布在  Node.js
关注(0)|答案(4)|浏览(115)

我们的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这样的命令来启动您的开发服务器。
有什么主意吗?

我们技术堆栈的核心部分

  • “@材料界面/核心”:“^4.0.0-字母8”,
  • “@条带/React条带js”:“^1.1.2”,
  • “cors”:“^2.8.5”,
  • “火线”:“^7.14.4”,
  • “下一页”:“^9.5.2,”
  • “React”:“^16.8.6”,
  • “React查询”:“^2.12.1”,
vuktfyat

vuktfyat1#

运行npm run dev只调用package.json文件中的dev脚本。
它应该如下所示:

"dev": "next",

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

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

os8fio9y2#

我最近遇到了一个类似的问题,这是由于VS代码自动从一个现有的npm模块中导入一个log方法。它使下一个服务器(dev模式)和storybook CLI崩溃。堆栈跟踪没有帮助,而且很难捕捉。
这不是我第一次遇到这个问题,即使没有VS代码。根据我的经验,我建议检查你的导入。你也可能有一个循环依赖。
如果下一个构建命令通过,则应检查任何dev依赖项导入。
祝你好运!

mlnl4t2r

mlnl4t2r3#

我有很多次类似的情况。当我尝试使用index.ts来简化导入时,大多数都是通过检查循环依赖来解决的。
madge救了我。

npm -g install madge
npx madge -s -c --extensions ts,tsx ./src/
edqdpe6u

edqdpe6u4#

1.删除.next文件夹
1.运行npm run dev
问题已修复。

相关问题