在create-react-app项目中增加JavaScript堆大小

28

Node提供了通过传递--max-old-space-size命令行标志来增加堆大小的方法。 在create-react-app项目中,一切都取决于使用react-scripts。 我该如何在这样的项目中传入此参数,并在哪里最好执行?

谢谢您的帮助。


39
因为这些脚本只是特定目录下的JS文件,所以您可以像平常一样调用Node进程,并将node_modules/.bin/react-scripts作为参数传递给它。它与实际脚本建立了符号链接。 - Dan Abramov
6个回答

33

非常感谢@dan-abramov,他的评论就是答案!(如果您看到这条消息,请给他点赞)。

您只需将例如node --max_old_space_size=4096 node_modules/.bin/react-scripts start放入其中,而不是react-scripts start


7
这里出现了一个错误:在react scripts的第2行中,basedir=$(dirname.......),报错信息为missing ) after argument list。请帮忙处理。 - Dhiraj Gandhi
3
我有同样的问题,我们的Ubuntu服务器只有1GB内存,我该怎么办? - Mitul Marsoniya
1
这是4096 MB,即4 GB。 - lukaswelte
这对我不起作用,它仍然使用超过1GB的内存(当我将其设置为256时),处理器达到300+%。我错过了什么吗?有没有其他方法来限制资源使用? - S..
获取 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory - fabpico
显示剩余2条评论

29
"build": "react-scripts --max_old_space_size=4096 build"

这应该可以工作


这里的4096是指4096GB还是MB? - vinayak shahdeo
@vinayakshahdeo 这意味着4096 MB。 - PaulMest
1
我尝试了这个方法,即使设置了8GB或12GB,但仍然无法解决我的问题。 - Pavan Jadda
1
获取 FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory - fabpico
@fabpico, 我也遇到了同样的致命错误:MarkCompactCollector 你是如何解决的? - undefined
1
@Sandeepsandy 我觉得我通过升级 NodeJs 解决了所有的“堆内存不足”的问题。 - undefined

19
您可以按照 https://create-react-app.dev/docs/advanced-configuration 中所述禁用源映射的生成。
根据文档,当设置为 false 时,生产构建将不会生成源映射。这可以解决一些较小机器上的内存不足 (OOM) 问题。
这种情况通常出现在堆内存溢出错误时。
要禁用源映射生成,请创建一个 .env 文件并添加 `GENERATE_SOURCEMAP=false`。

11

一行命令,在终端中输入 -> export NODE_OPTIONS=--max_old_space_size=4096


1

如果您正在使用craco build,只需像下面这样添加标志

craco --max_old_space_size=4096 build

1

添加

ENV GENERATE_SOURCEMAP=false

在你的Docker文件中。 这对我有用。
谢谢!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接