【问题标题】:Grunt uglifym - call stack size exceededGrunt uglifym - 超出调用堆栈大小
【发布时间】:2013-06-10 21:32:45
【问题描述】:

我正在尝试使用带有 grunt 的 uglify 来连接和缩小一些文件。我已经使用 npm 来install grunt-contrib-uglify

我的 grunt.js 文件中有以下内容:(我已删除其他一些匿名任务)

module.exports = function(grunt) {

  'use strict';      

    grunt.loadNpmTasks('grunt-contrib-uglify');

    uglify: {
        options: {
            sourceMap: 'app/map/source-map.js'
        },
        files: {
            'app/dist/sourcefiles.min.js': [
                'app/test_js/test.js'
              ]
        }
    }

};

然后我运行:

grunt uglify

但我不断收到以下错误:

Warning: Maximum call stack size exceeded Use --force to continue.

如果我使用武力,咕噜任务永远不会停止运行。

谁能告诉我哪里出错了?我正在把头发扯下来。

【问题讨论】:

  • 我知道了。我正在自动化任务,然后调用它,创建一个循环。

标签: gruntjs


【解决方案1】:

我也遇到了同样的问题,我使用了另一个 Grunt 插件,叫做recess。 错误消息不明确。

Warning: Cannot read property 'message' of undefined Use --force to continue.

但是详细模式显示我的任务被调用了数百次。 问题是我在注册任务时创建了“循环依赖”(导致无限循环)。

grunt.registerTask('recess', ['recess']); //does not work => cyclic dependency! 

registerTask 方法的第一个参数是一个“别名任务”,并且必须与第二个参数中定义的任务名称不同。 我这样更正:

grunt.registerTask('my-recess-task', ['recess']);

我运行了调用它的任务(在命令提示符窗口中)

grunt my-recess-task

然后就没事了!

更多关于 registerTask() 方法,来自 grunt API: http://gruntjs.com/api/grunt.task#grunt.task.registertask

【讨论】:

  • 这看起来很傻很烦人。错误消息根本不是描述性的!感谢您提供的信息,尽管这为我节省了大量时间。
【解决方案2】:

我也遇到了这个问题,我通过删除解决了这个问题 grunt.registerTask('uglify', ['uglify']);

在我解决这个问题之前,我跑了grunt uglify -v 来检查发生了什么。

我发现它是因为你使用这个 grunt.loadNpmTasks('grunt-contrib-uglify'); 的地方,它隐式地执行了 grunt.registerTask('uglify', ['uglify']); ^_^

【讨论】:

    猜你喜欢
    • 2015-04-26
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2015-12-29
    • 2017-12-27
    • 2020-12-06
    相关资源
    最近更新 更多