it-swarm.com.ru

ВНИМАНИЕ: Попытка загрузки под углом более одного раза. Угловой JS

Я пытаюсь просмотреть свое приложение после запуска Grunt Build. Я использую grunt serve: dist, чтобы увидеть всю готовую сборку, но в браузере я получаю бесконечный цикл:

ВНИМАНИЕ: Попытка загрузки под углом более одного раза. 

Я читал, что это происходит потому, что 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: '/'
      });
  }]);
44
Vishal Sakaria

В моем случае это было связано со следующим 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> не закрыт. Это привело к моему варианту «ПРЕДУПРЕЖДЕНИЕ. Попытка загрузки под углом более одного раза». выпуск.

38
jhohlfeld

Эта проблема также вызвана использованием текущей страницы в качестве templateUrl. Это особенно проблематично, поскольку приводит к бесконечному циклу обращения к себе снова и снова.

Если вы получаете бесконечный цикл, который разрушает вашу страницу, возможно, это так. Если вы получаете ошибки CORS, возможно, это связано с включением тега сценария из другого домена в шаблон.

$routeProvider.when('/', {
   templateUrl: 'an/absolute/url/to/the/current/page.html'
});
31
Man Personson

У меня была эта проблема, потому что мой путь templateUrl был неправильным, потому что мой index.html находился в другой корневой структуре. Попробуйте проверить путь URL, просто используя template вместо templateUrl

Поместите изображение в папку views и попробуйте это.

$routeProvider.when('/', {
   template: 'Test Template <img src="views/pic.jpg"/>',
   controller: 'PostsCtrl'
});

$routeProvider.otherwise({ redirectTo: '/' });

Вы должны увидеть «Тестовый шаблон», и изображение появится на вашей странице индекса. Если изображение не отображается, ваш путь неверен.

12
Blake Bowen

Я столкнулся с той же проблемой. Но в моем случае, со сборкой webpack были упакованы две разные версии Angular (Angular 1.5.5 и Angular 1.5.0). 

6
fernando

Да, я разобрался, переместив post.html в партиалы и изменив templateUrl на partials/posts.html. Я думаю, это может быть связано с тем, что я использовал скаффолд Yo, который был угловым fullstack, потому что он прекрасно работает в проекте see. Спасибо, в любом случае 

3
Vishal Sakaria

Я подтверждаю все выше (как правило, ошибки маршрутизации или некоторые ошибки на пути к ресурсам или ошибка ng-app).

Я хотел бы добавить только пункт, чтобы помочь найти ошибку (не в случае неправильного ng-приложения).

Если мы предположим, что сервер для angular установлен следующим образом:

  • / static/* для всех статических ресурсов (js, css, png ...) 
  • / api/* остальные api
  • / * все остальные вызовы будут перенаправлены на index.html

Таким образом, все неправильные пути будут возвращать index.html вместо файлов png, css, js и tpl, даже если отсутствует/static/path или miss для возврата 404 за отсутствующие статические ресурсы.

короче говоря: проверьте логин на сервере, по которому вы открываете пути , там можно найти свидетельство ошибки.

2
Lattanzio

Проблема на самом деле связана с тем, что угловая библиотека загружается слишком много раз.

Мой ответ может показаться слишком очевидным, но сам код в порядке, и не так много информации о том, в чем может быть проблема. Если вы можете опубликовать свое дерево папок, возможно, это может быть полезно.

В то же время, пожалуйста, убедитесь, что эти две вещи в порядке, прежде чем продолжить расследование:

  • views/posts.html не содержит тега script с вызовом библиотеки angular.js.
  • файл views/posts.html доступен в этой позиции (возможно, используйте полный URI).
2
Francesco

Вы должны изменить угловой маршрут '/'! Это проблема, потому что '/' запрос базового URL. Если вы поменяете '/' => '/ home' или '/ hede', то угловая будет работать хорошо .... Пример:

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' });
    }]);
2
Salih KARAHAN

Недавно я получил эту ошибку, и я решил, что нужно зайти в Web.config и изменить <compilation debug="false" targetFramework="4.5.2"/> на <compilation debug="true" ... /> Надеюсь, это кому-нибудь поможет! Ура!

1
DDelgro

В моем случае причиной предупреждения было избыточное включение скрипта «angular-scene.js» после «angular.js». 

Когда я удалил «angular-scenery.js», предупреждение исчезло.

1
hellowstone

Мы случайно пытались загрузить несуществующий маршрут в ui-view. Маршрут, однако, соответствует действительному URL-адресу, содержащему приложение Angular. Вместо этого он загрузил это приложение Angular в ui-view, отсюда и несколько копий Angular.

0
Westy92

Это тот случай, когда код как-то заходит в бесконечный цикл. Убедитесь, что вы проверили, есть ли в вашем коде перенаправления, которые вызываются несколько раз.

0
Kurkula

В моем случае файл шаблона (не строка) был пустым. Когда я заполнил файл шаблона простым html, проблема была решена. Заполните views/posts.html некоторым кодом.

0
Gegham Khachatryan

В моем случае угловая библиотека и код моего углового модуля динамически загружаются в другое приложение, которое я не могу контролировать. И они загружаются по нажатию кнопки. В первый раз он работает нормально, но когда пользователь нажимает второй раз, библиотека и другие файлы загружаются снова, и это выдает мне предупреждение.

ВНИМАНИЕ: Попытка загрузки под углом более одного раза.

var isInitialized = element.injector();
if (!isInitialized) {
  angular.bootstrap(angular.element(document.getElementById('#mainDiv')), ['defaultApp']);
}
0
Aniruddha Das

В моем случае app-view-segment="1" отсутствовал, и было две ссылки, указывающие на одну и ту же папку angular в файле index.cshtml, в строках @Scripts.Render. Спасибо за указание на угловую трассу. 

0
Umpa

В прошлый раз, когда это случилось со мной, это был ведущий '/' в templateUrl маршрута, которого не должно было быть.

На этот раз, однако, это было несколько представлений, которые не отображались в кэше шаблонов после сборки, потому что я поместил эти представления в подпапку подпапки в папке представлений. Gruntfile.js не был настроен на выбор папок 3-го уровня из «/ views».

Чтобы узнать, что было отрисовано в сборке yo-grunt, вы можете посмотреть на .tmp/templateCache.js после того, как сборка завершится.

Мне бы очень хотелось, чтобы команда AngularJS LTS нашла способ лучше справиться с такого рода ошибками, а также лучше понять, в чем проблема.

Надеюсь это поможет!

0
Ady Rosen

Просто чтобы добавить еще один возможный сценарий к этой проблеме ...

Поведение : все отлично работает при загрузке с корневого URL, но вы сталкиваетесь с этой проблемой при загрузке страницы с любого другого маршрута (или при вводе другого маршрута).

Вероятная причина : один из ваших вложенных компонентов или страниц загружает что-то из пути относительный вместо пути absolute.

В моем случае это было связано со ссылочным компонентом, загружающим свой шаблон с относительным путем.

Так, например, меняется от этого:

angular.
  module('app').
  component('profileSelect', {
    // this line was the problem
    templateUrl: 'static/angular/profiles/profile-select.html',
    bindings: {}
  });

к этому:

angular.
  module('app').
  component('profileSelect', {
    // making this an absolute path fixes it
    templateUrl: '/static/angular/profiles/profile-select.html',
    bindings: {}
  });

Разрешил это. В основном потому, что теперь у вас есть подпути, эти относительные ссылки больше не работают, и angular решает потерпеть неудачу таким невероятно трудным для расшифровки способом.

Надеюсь, кому-то поможет этот ответ. Я только потерял час + своей жизни к этому ...

0
Cory

Ваше решение может работать локально, например, если вы выполняете grunt serve, но при запуске grunt build ваше представление может не включаться в каталог dist. Например, если у вас есть представление и это представление находится в представлении> шаблоны>modulesчто-либо, кромеtwo levelне будет добавлено при запуске grunt build по умолчанию. По крайней мере, так было для меня. Проверьте, включен ли ваш html-файл в каталог dist в представлениях. Если он не добавляет ваши файлы вручную, чтобы убедиться, что он работает, обновите ваш файл grunt соответственно.

0
Galactic Ranger

В моем случае проблема была связана с расширением AngularJS Batarang Chrome (версия 0.7.1). Как только я отключил расширение, ошибка исчезла.

0
Borivojević