警告:试图加载angular度不止一次。 Angular JS
我正在尝试运行Grunt Build后查看我的应用程序。 我使用grunt serve:dist来查看所有生产准备好的版本,但是在浏览器中我得到一个无限循环:
警告:试图加载angular度不止一次。
我已经读过这个,因为TemplateURL:在连接后可能是错误的。 正如在这篇文章中: 试图加载angular度不止一次
但是我如何解决这个问题呢? 这是我的app.js
/* global libjsapp:true */ 'use strict'; var libjsapp = angular.module('libjsApp', [ 'ngCookies', 'ngResource', 'ngSanitize', 'ngRoute' ]); libjsapp.config(['$routeProvider', function ($routeProvider, $locationProvider) { $routeProvider .when('/', { templateUrl: 'views/posts.html', controller: 'PostsCtrl' }) .otherwise({ redirectTo: '/' }); }]);
在我的情况下,这是由于以下的HTML代码:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Testapp</title> </head> <body ng-app="testApp"> <main ui-view> <script src="bower_components/jquery/jquery.js"></script> <script src="bower_components/angular/angular.js"></script> <script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script> <script src="scripts/main.js"></script> </body> </html>
正如你所看到的, <main>
没有closures。 这导致了我的变种'警告:试图加载angular度不止一次。 问题。
这个问题也是由于使用当前页面作为templateUrl
。 这是特别有问题的,因为它导致无限循环反复引用自身。
如果你得到一个无限循环,崩溃你的页面,这可能是这样的。 如果您收到CORS错误,可能是由于您的模板中包含来自其他域的脚本标记。
$routeProvider.when('/', { templateUrl: 'an/absolute/url/to/the/current/page.html' });
我有这个问题,因为我的templateUrl
path是错误的,因为我的index.html
在不同的根结构。 尝试使用template
而不是template
来testingURLpath。
放置一个图像在您的views
文件夹,并尝试这一点。
$routeProvider.when('/', { template: 'Test Template <img src="views/pic.jpg"/>', controller: 'PostsCtrl' }); $routeProvider.otherwise({ redirectTo: '/' });
您应该看到“testing模板”,图像显示在您的索引页上。 如果图像没有显示,你的path是错误的。
我遇到了同样的问题。 但在我的情况下,与webpack构build两个不同的Angular版本打包(Angular 1.5.5和Angular 1.5.0)。
是的,我通过将post.html移动到partials并将templateUrl更改为partials / posts.html来整理它。 我认为这可能是由于我使用的哟脚手架,这是angular度全堆,因为它看起来很好的项目。 不pipe怎么说,还是要谢谢你
问题实际上与angular度库被加载太多次有关。
我的回答听起来太明显了,但是代码本身很好,关于问题可能没有太多的信息。 如果你可以发布你的文件夹树,也许它可以是有用的。
同时,在进一步调查之前,请确保这两件事情都可以:
- views / posts.html不包含调用angular.js库的脚本标记。
- views / posts.html文件在这个位置是可用的(也许使用一个完整的URI)。
我确认以上所有(通常路由错误或资源path上的一些错误或ng-app错误)。
我想补充一点,以帮助find错误(不是在错误的应用程序的情况下)。
如果我们假设angular度的服务器设置如下:
- /静态/ *为所有静态资源(js,css,png …)
- / api / * rest api
- / *所有其他呼叫将redirect到index.html
通过这种方式,所有错误的path将返回index.html而不是png,css,js和tpl文件,即使缺less/ static / path或miss来返回缺less静态资源的404。
简而言之: 检查服务器上的日志巫婆path是你打开页面 ,错误证据可以在那里find。
你必须改变angular度路线'/'! 这是一个问题,因为“/”基地址的请求。 如果你改变'/'=>'/ home'或者'/ hede',angular度会很好。 样品:
Module.Js:
var application = angular.module('flow', ['ngRoute', 'ngResource']);
RouteConfig.Js:
angular.module('flow') .config(['$routeProvider', function ($routeProvider) { $routeProvider .when('/home', { templateUrl: '/home/index', controller: 'HomeController' }) .when('/error', { templateUrl: '/Error/Index', controller: 'ErrorController' }) .when('/login', { templateUrl: '/Account/Login', controller: 'AccountController' }); }]);
在我的情况下,警告的原因是“angular.js”之后的“angular-scenario.js”的冗余脚本包含。
当我删除“angular-scenario.js”警告消失。
您的解决scheme可能在本地工作,例如,如果您正在运行grunt服务,但是当您运行grunt生成时,您的视图可能不会包含在dist目录中。 例如,如果你有一个视图,并且该视图是在视图>模板> 模块中 ,那么默认情况下运行grunt构build时,不会添加两个以上的级别 。 至less对我来说是这样的。 检查你的html文件是否被包含在视图的dist目录中。 如果没有手动添加你的文件来validation它的工作,然后更新你的grunt文件。
在我的情况下,这个问题与AngularJS Batarang Chrome Extension(版本0.7.1)有关。 一旦我禁用扩展错误消失。
在我的情况下,angular库和我的angular度模块代码dynamic加载在另一个应用程序,我没有任何控制。 而这些都是点击一个button加载的。 它第一次工作正常,但当用户第二次点击图书馆和其他文件再次加载,它给了我警告。
警告:试图加载angular度不止一次。
var isInitialized = element.injector(); if (!isInitialized) { angular.bootstrap(angular.element(document.getElementById('#mainDiv')), ['defaultApp']); }
这种情况是当代码以某种方式无限循环。 确保你确认你的代码中有多次redirect。
在我的情况下,模板文件(不是string)是空的。 当我用简单的html填充模板文件时,问题已经解决了。 用一些代码填充views/posts.html
。
我最近得到了这个错误,我解决它的方式是进入Web.config并将<compilation debug="false" targetFramework="4.5.2"/>
更改为<compilation debug="true" ... />
我希望这可以帮助别人! 干杯!
我们不小心尝试在ui-view
加载不存在的路由。 然而,路线确实对应于包含Angular应用程序的有效url。 它将Angular应用程序加载到ui-view
,因此是Angular的多个副本。
在我的情况下, app-view-segment="1"
丢失,并有两个引用指向index.cshtml文件中的angular度相同的文件夹,在@Scripts.Render
行。 感谢您指向angular度路由。
在我的情况下,这是在index.html中的一个无效的资源链接
<link rel="import" href="/somethingmissing.html">
我遇到了同样的问题,这就是为什么我在这里登陆。 但是,没有答案为我工作。 事实certificate,没有什么是错的代码,浏览器URL是罪魁祸首:它应该是localhost:3000/#/
,但不知何故,我有一些像localhost:3000/xxx/public/index.html/#/
我的浏览器。 顺便说一下,如果有问题,我在WebStorm中使用带有node.js的ui-router。