我正在尝试使用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任务永远不会停止运行。
有人能告诉我哪里出错了吗?我正在把这头发撕掉。
答案 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']);
^ _ ^