2015-09-18 5 views
6

Angesichts der folgenden Schluckaufgaben bin ich in der Lage, den Prozess gulp, webpack und nodemon erfolgreich zu starten, aber die Webpack-Tasks sind open ended, so dass sie weiterhin den Abschlusshandler auslösen, wenn ihr Watch/Compile-Zyklus abgeschlossen ist.Vermeiden Sie den Call Callback der Aufgabe, der zu oft aufgerufen wird?

Die Server-Task hängt von der Client-Task ausgegeben, so muss ich diese Operationen synchron sein, daher der done

function onBuild(done) { 
    return function(err, stats) { 
     if(err) { 
      gutil.log('Error', err); 
      if(done) { 
       done(); 
      } 
     } else { 
      Object.keys(stats.compilation.assets).forEach(function(key){ 
       gutil.log('Webpack: output ', gutil.colors.green(key)); 
      }); 
      gutil.log('Webpack: ', gutil.colors.blue('finished ', stats.compilation.name)); 
      if(done) { 
       done(); 
      } 
     } 
    } 
} 

//dev watch 
gulp.task('webpack-client-watch', function(done) { 
    webpack(devConfig[0]).watch(100, function(err, stats) { 
     onBuild(done)(err, stats); 
    }); 
}); 

gulp.task('webpack-server-watch', function(done) { 
    webpack(devConfig[1]).watch(100, function(err, stats) { 
     onBuild(done)(err, stats); 
     nodemon.restart(); 
    }); 
}); 

gulp.task('webpack-watch',function(callback) { 
    runSequence(
     'webpack-client-watch', 
     'webpack-server-watch', 
     callback 
    ); 
}); 

gulp.task('nodemon', ['webpack-watch'], function() { 
    nodemon({ 
     script: path.join('server/dist/index.js'), 
     //ignore everything 
     ignore: ['*'], 
     watch: ['foo/'], 
     ext: 'noop' 
    }).on('restart', function() { 
     gutil.log(gutil.colors.cyan('Restarted')); 
    }); 
}); 

Wenn ich eine Datei zu ändern, der Beobachter tut seine Sache und schluck beschwert sich über den Rückruf wieder aufgerufen werden.

[15:00:25] Error: task completion callback called too many times

Ich habe auf diese sah, aber nicht sicher, ob seine Anwendung.

Why might I be getting "task completion callback called too many times" in gulp?

Grundsätzlich möchte ich nur dies ohne Fehler synchron und kontinuierlich zu arbeiten.

gulp nodemon

Antwort

8

Dies löste es für mich: Einfach die callback Parameter in Ihrer webpack-watch Aufgabe nicht nennen. Lass es komplett aus.
Danach funktioniert der Beobachter gut und schnell ohne sich zu beschweren.

+1

nicht sicher, ob dies negative Auswirkungen hat, aber das funktioniert –

Verwandte Themen