当我尝试uglify文件时找不到Angular

时间:2014-05-08 18:45:39

标签: javascript angularjs gruntjs uglifyjs

我使用gruntusemin来连接和丑化以下内容:

<!-- build:js /assets/vendor.js -->
<script src="../public/bower_components/angular/angular.min.js"></script>
<script src="../public/bower_components/angular-route/angular-route.min.js"></script>
<!-- endbuild -->

所以这给了我一个vendor.js。我有app.js看起来像:

(function() {
  'use strict';
  var myApp;

  myApp = angular('myApp', ['ngRoute']);

  myApp.config([
    "$routeProvider", "$translateProvider", "$locationProvider", function($routeProvider, $translateProvider, $locationProvider) {
      $routeProvider.when("/login", {
        templateUrl: "/templates/login.html"
      }).otherwise({
        redirectTo: "/login"
      });
      return $locationProvider.html5Mode(true);
    }
  ]);

}).call(this);

出于某种原因,我在运行时说angular is not a function。如果有人需要,我的uglified和连接的angular脚本位于:https://gist.github.com/shamoons/b41855b7bd3acb94325d

1 个答案:

答案 0 :(得分:1)

代码实际上应该是:

myApp = angular.module('myApp', ['ngRoute']);

您已尝试将角度调用为函数,这就是您收到错误的原因!

示例

我甚至根据您的grunt缩小文件(从链接下载)创建了一个角度页面。一切都运作良好。

<强> HTML

<html ng-app="app">
  <body ng-controller="test">
    {{test}}

    <script src="angular-gruntmin.js" type="text/javascript"></script>
    <script src="test.js" type="text/javascript"></script>
  </body>
</html>

<强>的Javascript

var app = angular.module('app', []);
app.controller('test', function ($scope) {
   $scope.test = "ABCDEFG";
});

你可以在这里看到这个:http://plnkr.co/edit/0fX0wwulbWBS8Plbmarl?p=preview