4

我在 GruntJS 脚本中遇到以下错误:

超出最大调用堆栈大小"

在我的 grunt 命令中调用节点标志的正确语法是什么,--max-stack-size=以便我可以为堆栈留出更多的内存?

4

4 回答 4

6

除非您在 GruntJS 中进行一些非常高级的编程,否则我认为您可能注册了一个循环任务。

如果您将任务命名为与插件相同的名称,它将运行无限次:

grunt.registerTask('uglify', ['uglify'])

这导致任务调用自身。

为了验证你在做什么,使用--verbose(或 --v)命令运行 grunt 以查看 grunt 正在运行什么。

例如运行grunt uglify --v并注意它运行了多少次。这可以通过将任务名称更改为其他名称来轻松解决。

但是,如果您确定自己在做什么,请运行 grunt--max-stack-size=10000 或其他...

于 2013-08-16T12:32:21.067 回答
2

在本地安装grunt-clinpm install grunt-cli然后在本地调用它:

node --max-stack-size=val ./node_modules/.bin/grunt

尽管由于应该修复的无限递归,您可能会收到该错误。

于 2013-06-24T22:59:19.113 回答
1

这应该适用于linux或mac:

node --stack-size=10000 `which grunt`

10000 可以替换为您需要的任何尺寸。

在我的 mac 和我最近一直在使用的 ubuntu 服务器上,默认值为 984。

另一种选择是将其添加到您的.bashrc.bach_profile等效项中:

alias grunt='node --stack-size=10000 `which grunt`'
于 2017-05-22T21:39:59.680 回答
0

当我通过grunt.task.run(). 似乎 grunt 的success回调填满了 NodeJs 堆栈。

c:\Users\%UserName%\AppData\Roaming\npm\grunt.cmd我对(在 Windows 上)进行了手动编辑。添加您的节点版本支持的参数,例如--stack_size=2000(详情请使用node -help)。

于 2013-11-15T14:19:29.653 回答