更改grunt任务的--max-stack-size

时间:2013-06-24 21:32:13

标签: node.js gruntjs

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

  

超出最大调用堆栈大小“

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

4 个答案:

答案 0 :(得分:6)

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

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

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

这导致任务调用自己。

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

例如,运行grunt uglify --v并注意它运行的次数。通过将任务名称更改为其他名称,可以轻松修复此问题。

但是,如果您确定自己正在做什么,请使用--max-stack-size=10000进行咕噜声 或者其他......

答案 1 :(得分:2)

使用grunt-cli在本地安装npm install grunt-cli,然后在本地调用:

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

虽然可能因为无限递归而得到了这个错误,但应该修复。

答案 2 :(得分:1)

这应该适用于linux或mac:

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

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

我的mac和我最近一直在努力的ubuntu服务器上的默认值是984.

另一种选择是将其添加到您的.bashrc.bach_profile或同等身份:

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

答案 3 :(得分:0)

当我通过grunt.task.run()动态调用任务时,类似的问题发生在我身上。 似乎grunt的success回调填充了NodeJs堆栈。

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

相关问题