angular mean.io developer prodution uglify minification on minification

时间:2014-05-02 13:46:02

标签: angularjs heroku gruntjs minify mean-stack

任何人都可以解释一下这段代码的错误:

.controller('ArticleCreateCtrl', ['$scope', '$state', '$filter', 'Articles', function ($scope, $state, $filter, Articles) {
        $scope.article = {};
        $scope.save = function(){
            $scope.article.categories = $filter('strcstoarray')($scope.article.categories);
            Articles.store($scope.article).then(
                function(data) {
                    $scope.article = data;
                    return $state.transitionTo('articles');
                }, 
                function(err) {
                    throw new Error(err);
                }
                );
        };
    }])

在我运行本地机器时效果很好 在heroku(生产环境因此与所有js minify) 我明白了:

错误:分配给未声明的变量数据

更新(我的服务)

angular.module('mean.system')
    .factory('Base',['Restangular', function(Restangular) {
        return function(route){
            var elements = Restangular.all(route);
            return {
                one : function (id) {
                    return Restangular.one(route, id).get();
                },
                all : function () {
                    return elements.getList();
                },
                store : function(data) {
                    return elements.post(data);
                },
                copy : function(original) {
                    return Restangular.copy(original);
                },
                getElements : function() {
                    return elements;
                }
            };
        };
    }]);
//Articles service used for articles REST endpoint
angular.module('mean.articles').factory('Articles', ['Base', function(Base) {
    _.mixin({
        'findByCategory': function(collection,category) {
            return _.filter(collection, function(item) {
                return _.contains(item.categories, category);
            });
        }
    });
    function Articles() {
        this.findByCategory = function(collection,category){
            return _.findByCategory(collection,category);
        };
    }
    return angular.extend(Base('articles'), new Articles());
}]);

2 个答案:

答案 0 :(得分:1)

确保您在Gruntfile.js中正确配置了uglify,并使用mangle:false

uglify: {
    options: {
        mangle: false
    },
    production: {
        files: '<%= assets.js %>'
    }
},

答案 1 :(得分:1)

我遇到了同样的问题,因为你必须使用ngmin任务,这会使一些角度库缩小。

package.json 之后,在uglify之前添加以下行:

"grunt-ngmin": "0.0.3"

然后更新依赖项:

npm install

然后在 Gruntfile.js 添加 ngmin 任务:

ngmin: {
  production: {
    files: '<%= assets.js %>'
  }
},

请记住添加ngmin任务之前 uglify:

grunt.registerTask('default', ['clean','cssmin', 'ngmin','uglify', 'concurrent']);

下次您在生产模式下运行服务器时,您的代码将起作用。