-1

私は AngularJS を使用しており、アプリケーション JS を次のように設定しています。

var userApp = angular.module('userApp',['ngRoute','ngAnimate', 'bw.paging', 'appConfig', 'userControllers']);

userApp.run(function($rootScope, $location) { 
    $rootScope.pagination = { };
});

userApp.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.useXDomain = true;
}]);

userApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider
        .when('/', {
            templateUrl : 'partials/index.html', 
            controller : 'IndexController' 
        })
        .otherwise({ 
            templateUrl : 'partials/routeNotFound.html', 
            controller : 'NotFoundController' 
        });
}]);

var userControllers = angular.module('userControllers', []);

次に、gulp を使用して次のようにこの JS ファイルをリントします。

gulp.task('lint1', function() {
    gulp.src('test.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'));
});

エラーは報告されません。次に、 を使用してこれを縮小しgulp-uglifyます。

gulp.task('minify1', function() {
    gulp.src('test.js')
        .pipe(uglify())
        .pipe(gulp.dest('dist'));
});

縮小された出力が得られます。ただし、HTML アプリケーションで縮小された出力を使用すると、AngularJS エラーが発生します。醜い JS を (jsbeautifier.org 経由で) 美化すると、次の結果が表示されます。

var userApp = angular.module("userApp", ["ngRoute", "ngAnimate", "bw.paging", "appConfig", "userControllers"]);
userApp.run(function(r, e) {
    r.pagination = {}
}), userApp.config(["$httpProvider", function(r) {
    r.defaults.useXDomain = !0
}]), userApp.config(["$routeProvider", function(r) {
    r.when("/", {
        templateUrl: "partials/index.html",
        controller: "IndexController"
    }).otherwise({
        templateUrl: "partials/routeNotFound.html",
        controller: "NotFoundController"
    })
}]);
var userControllers = angular.module("userControllers", []);

ご覧のとおり、,セミコロンがあるはずの場所にコンマがあります;。入力した JS ファイルが悪いのgulp-uglifyでしょうか、それともめちゃくちゃですか? この問題を解決するにはどうすればよいですか?

4

3 に答える 3

2

変化する:

userApp.run(function($rootScope, $location) { 
    $rootScope.pagination = { };
});

に:

userApp.run(['$rootScope', '$location', function($rootScope, $location) { 
    $rootScope.pagination = { };
}]);
于 2015-09-07T11:11:23.827 に答える
1

問題は醜いことではなく、あなた自身のコードです。Angular の依存性注入を破っています。

userApp.run(function($rootScope, $location) { 
    $rootScope.pagination = { };
});

する必要があります

userApp.run(['$rootScope', '$location', function($rootScope, $location) { 
    $rootScope.pagination = { };
}]);

または、この依存性注入の問題を処理する ng-annotate を使用することもできます。https://www.npmjs.com/package/gulp-ng-annotate

于 2015-09-07T11:12:08.740 に答える