Grunt uglifym - 超出了调用堆栈大小

时间:2013-06-10 21:32:46

标签: gruntjs

我正在尝试使用uglify和grunt来连接和缩小一些文件。我已经将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.

如果我使用force,那么grunt任务永远不会停止运行。

有人能告诉我哪里出错了吗?我正在把这头发撕掉。

2 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:3)

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

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

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