我在 GruntJS 脚本中遇到以下错误:
超出最大调用堆栈大小"
在我的 grunt 命令中调用节点标志的正确语法是什么,--max-stack-size=
以便我可以为堆栈留出更多的内存?
除非您在 GruntJS 中进行一些非常高级的编程,否则我认为您可能注册了一个循环任务。
如果您将任务命名为与插件相同的名称,它将运行无限次:
grunt.registerTask('uglify', ['uglify'])
这导致任务调用自身。
为了验证你在做什么,使用--verbose
(或 --v)命令运行 grunt 以查看 grunt 正在运行什么。
例如运行grunt uglify --v
并注意它运行了多少次。这可以通过将任务名称更改为其他名称来轻松解决。
但是,如果您确定自己在做什么,请运行 grunt--max-stack-size=10000
或其他...
在本地安装grunt-cli
,npm install grunt-cli
然后在本地调用它:
node --max-stack-size=val ./node_modules/.bin/grunt
尽管由于应该修复的无限递归,您可能会收到该错误。
这应该适用于linux或mac:
node --stack-size=10000 `which grunt`
10000 可以替换为您需要的任何尺寸。
在我的 mac 和我最近一直在使用的 ubuntu 服务器上,默认值为 984。
另一种选择是将其添加到您的.bashrc
或.bach_profile
等效项中:
alias grunt='node --stack-size=10000 `which grunt`'
当我通过grunt.task.run()
. 似乎 grunt 的success
回调填满了 NodeJs 堆栈。
c:\Users\%UserName%\AppData\Roaming\npm\grunt.cmd
我对(在 Windows 上)进行了手动编辑。添加您的节点版本支持的参数,例如--stack_size=2000
(详情请使用node -help
)。