javascript - 试图多次加载 Angular

标签 javascript angularjs gruntjs

我有一个 yeoman 脚手架应用程序(angular fullstack 生成器)。

grunt serve 工作正常,但是 grunt build 产生了一个锁定内存的分布,很可能是因为 angular 中的循环引用。

我将 Angular 升级到 1.2.15。我得到的错误是:

警告:尝试多次加载 Angular

在升级之前,错误是:

错误:达到 10 次 $digest() 迭代。中止!

调试非常困难,因为它只发生在构建/缩小之后。我所有的模块都是 Angular 的数组格式,所以缩小 DI 应该不是问题,但确实是。

没有单一的脚本会导致这种情况。它消失的唯一方法是如果我不使用我的 app.js 文件进行初始化。我的 app.js 文件在下面。

想到什么了吗?

'use strict';

angular.module('myApp', [
  'ngCookies',
  'ngResource',
  'ngSanitize',
  'ngRoute',
  'ngTagsInput',
  'ui.bootstrap',
  'google-maps',
  'firebase'
]);

angular.module('myApp').config(['$routeProvider', function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/listing.html',
        controller: 'ListingCtrl'
      })
      .otherwise({
        redirectTo: '/'
      });
  }]).constant('FIREBASE_URL', 'something');

最佳答案

这可能是一些问题:本质上是 routeProvider 找不到文件并递归加载默认值的问题。

对我来说,事实证明,导致问题的不是缩小,而是 js 的串联。

angular.module('myApp').config(['$routeProvider', function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/listing.html',
        controller: 'ListingCtrl'
      })
      .otherwise({
        redirectTo: '/'
      });
  }]).constant('FIREBASE_URL', 'something');

您会注意到,如果应用找不到文件(即 otherwise),那么它将重定向到根目录,在本例中加载 templateUrl。但是,如果您的 templateUrl 是错误的,那么它会导致递归,一遍又一遍地重新加载 index.html loading angular(以及其他所有内容)。

在我的例子中,grunt-concat 导致 templateUrl 在构建之后出错,但之前不会。

关于javascript - 试图多次加载 Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22595878/

相关文章:

c# - 如何在 C# 中将 html2canvas JavaScript 与 Selenium Webdriver 结合使用

javascript - Angular 、过滤并显示数组的一个对象

javascript - 如何在 Yeoman 生成器安装完成后运行 Grunt 任务?

javascript - 根据单选按钮选择显示表单字段数据

javascript - JS - Canvas 元素内的中心图像

javascript - 使用 React hooks 更改页面(重置自身)

javascript - 如何禁用 cookie 覆盖?

javascript - ng-toggle,添加到数组,

netbeans - 如何将 GruntJS 与 Netbeans 8 集成

gruntjs - 使用 grunt registerTask 目标