我有以下gulp任务:
gulp.task('scripts',function() { return gulp.src(['app/js/app.js','app/config/config.js','app/js/controllers.js','app/js/directives.js','app/js/filters.js','app/js/footer.js','app/js/guideTour.js','app/js/mobileBanner.js','app/js/services.js','app/js/youtube.js','app/js/dataSync.js','app/js/addthis.js']) //.pipe(jshint('.jshintrc')) .pipe(jshint.reporter('default')) .pipe(concat('main.js')) .pipe(ngmin()) .pipe(gulp.dest('app/dist/js')) .pipe(rename({suffix: '.min'})) .pipe(uglify()) .pipe(gulp.dest('app/dist/js')) .pipe(livereload(server)) .pipe(notify({ message: 'Scripts task complete' })); });
问题是连接文件也是ngmin()的输出,工作正常,但是在解密代码后,某些东西中断了,我得到了following error。
没有具体的指标从哪里开始调试。
堆栈跟踪:
Error: [$injector:unpr] http://errors.angularjs.org/1.2.9/$injector/unpr?p0=eProvider%20%3C-%20e at Error (native) at http://localhost:8000/angular/angular.min.js:6:449 at http://localhost:8000/angular/angular.min.js:32:125 at Object.c [as get] (http://localhost:8000/angular/angular.min.js:30:200) at http://localhost:8000/angular/angular.min.js:32:193 at c (http://localhost:8000/angular/angular.min.js:30:200) at Object.d [as invoke] (http://localhost:8000/angular/angular.min.js:30:417) at http://localhost:8000/angular/angular-route.min.js:10:302 at Object.q [as forEach] (http://localhost:8000/angular/angular.min.js:7:380) at http://localhost:8000/angular/angular-route.min.js:10:248
解决方案是运行uglify任务,将
mangle选项设置为false。
即:.uglify({mangle:false})
即:.uglify({mangle:false})
整码:
gulp.task('scripts',function() { return gulp.src('app/js/**/*.js') .pipe(jshint('.jshintrc')) .pipe(jshint.reporter('default')) .pipe(concat('main.js')) .pipe(ngmin()) .pipe(gulp.dest('app/dist/js')) .pipe(rename({suffix: '.min'})) .pipe(uglify({mangle: false})) .pipe(gulp.dest('app/dist/js')) .pipe(livereload(server)) .pipe(notify({ message: 'Scripts task complete' })); });