Ein kleiner, fieser Fehler in Grunt hat mich die letzten Tage schwer beschäftigt. Jedesmal wenn ich einen bestimmten Task aufgerufen habe gab, es eine saftige Fehlermeldung:
(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
util.js:35
var str = String(f).replace(formatRegExp, function(x) {
^
RangeError: Maximum call stack size exceeded
Process finished with exit code 7
Mit solchen Meldungen kann niemand was ich nichts anfangen. Das verwirrt nur.
Der obige Fehler tritt auf, wenn im der im Gruntfile.js registrierte TaskName genauso heißt wie ein Task. In meinem Fall war es so:
grunt.registerTask('uglify', ['jshint', 'uglify']);
Die Lösung – wenn man denn erstmal darauf kommt – ist simpel. Einfach den TaskName irgendwie anderes benennen. Bei mir war so der Fehler behoben:
grunt.registerTask('ugly', ['jshint', 'uglify']);
Ohne den Tipp aus Stackoverflow wäre ich wohl nie darauf gekommen. Danke dafür! :-)
PS: Ach ja, wer einen Fehler findet, sollte ihn zuerst immer dem Entwickler mitteilen und dann darüber posten… ;-)