programing

각도를 여러 번 로드하려고 했다.

lastcode 2023. 2. 17. 19:39
반응형

각도를 여러 번 로드하려고 했다.

Yoman 발판 앱(각진 풀스택 제너레이터)을 가지고 있습니다.

grunt serve은 양호하지만,grunt build는 메모리를 잠그는 분포를 생성합니다.아마도 각도에서의 순환 참조가 원인일 것입니다.

에서 to각 angular angular angular angular angular angular 했습니다.1.2.15을 사용하다

WARNING: Tried to Load Angular More Than Once

업그레이드 전 오류는 다음과 같습니다.

Error: 10 $digest() iterations reached. Aborting!

디버깅은 빌드/최소화 후에만 이루어지기 때문에 매우 어렵습니다.내 모듈은 모두 angular의 배열 형식이기 때문에 최소 DI는 문제가 없지만 문제가 있습니다.

원인이 되는 스크립트는 1개도 없습니다.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각도(및 다른 모든 것)를 반복하여 적재합니다.

제 경우 grunt-concat으로 인해 빌드 후 templateUrl이 잘못되었지만 이전은 아닙니다.

이 문제는 $templateCacheProvider가 templateCache 또는 존재하지 않는 프로젝트 디렉토리를 통해 템플릿을 해결하려고 할 때 발생할 수 있습니다.

예:

templateUrl: 'views/wrongPathToTemplate'

다음 항목이어야 합니다.

templateUrl: 'views/home.html'

일은 건건 this 、 this 、 this 、 this 、 this 、 this 、 this this this this this 。app.js하면 이 됩니다.대신 Angular JS 라이브러리를 두 번 이상 포함하면 이 경고가 기록됩니다.

JSBin의 에러를 재현했습니다.다음의 2개의 스크립트태그(2개의 다른 버전)에 주의해 주세요.

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>

GitHub의 관련 Angulargular code at GitHub.

아무도 이것에 대해 언급하지 않은 것 같습니다.그래서 이 일을 촉발시킨 것은 제 몸에 ng-view 지시가 있었기 때문입니다.그렇게 바꾸는 것

<body layout="column">
<div ng-view></div>
...
</body>

에러를 정지했습니다.

또한 무한 루프가 계속 발생하고 페이지가 무한히 새로고침되는 문제에 직면해 있었습니다.디버깅을 조금 한 결과 angular가 특정 ID로 지정된 템플릿을 로드할 수 없었기 때문에 해당 파일에 템플릿이 존재하지 않았기 때문에 오류가 발생했음을 알 수 있었습니다.

각진 앱에서 제공하는 URL에 주의하십시오.정확하지 않으면 각도가 계속 찾아 무한 루프를 일으킬 수 있습니다!

이게 도움이 됐으면 좋겠네요!

저도 같은 문제가 있었는데 문제는 JQuery와 Angular의 갈등이었습니다.Angular가 전체 JQuery 라이브러리를 직접 설정할 수 없습니다.대부분의 경우 JQLite로 충분하기 때문에 먼저 웹 페이지에 Angular를 포함시킨 후 Jquery를 로드했습니다.그때 에러가 없어졌어요.

내 경우 페이지의 angular js뿐만 아니라 jquery를 사용하는 동안 이 오류가 발생했습니다.

<script src="http://code.jquery.com/jquery-2.1.3.min.js" type="text/javascript"></script>
<script src="js/angular.js" type="text/javascript"></script>
<script src="js/angular-route.js" type="text/javascript"></script>

삭제했습니다.

<script src="http://code.jquery.com/jquery-2.1.3.min.js" type="text/javascript"></script>

그리고 그 경고는 사라졌다.

오늘 이 문제가 있어서 내가 어떻게 고쳤는지 게시해야겠다고 생각했다.제 경우 다음과 같은 index.html 페이지가 있습니다.

<body ng-app="myApp" ng-controller="mainController"
   <div ng-view></div>
</body>

제 app.js 파일에는 다음과 같은 코드가 있습니다.

$routeProvider.when('/', {
    controller : 'mainController',
    templateUrl : 'index.html',
    title : 'Home'
  }).when('/other', {
    controller : 'otherController',
    templateUrl : 'views/other.html',
    title : 'other'
  }).otherwise({
    redirectTo : '/'
  });

그 결과 페이지(base_url/)로 이동했을 때 index.html이 로드되어 ng뷰 내에서는 다시 index.html이 로드되고 그 내에서는 다시 index.html이 로드되었습니다.등 - index.load의 무한 재귀 부하를 생성합니다(각 각도 라이브러리를 로드할 때마다).

해결하려면 다음과 같이 routeProvider에서 index.html을 삭제하기만 하면 됩니다.

$routeProvider.when('/other', {
    controller : 'otherController',
    templateUrl : 'views/other.html',
    title : 'other'
  }).otherwise({
    redirectTo : '/'
  });

비슷한 문제가 있었습니다만, 컨트롤러에 세미콜론이 없는 것이 원인입니다.앱의 최소화로 인해 코드가 잘못 실행되었을 수 있습니다(그 결과 코드가 상태 돌연변이를 일으켜 보기를 렌더링한 다음 컨트롤러가 코드를 다시 실행하는 등 반복적으로 실행됩니다).

코드펜에 문제가 있었는데 알고보니 앵글 전에 JQuery를 로드하고 있었거든요.그것이 다른 경우에 적용될 수 있을지 모르겠다.

대문자도 중요합니다!지시문 내에서 다음 사항을 지정하려고 했습니다.

templateUrl: 'Views/mytemplate'

"한 번 이상" 경고를 받았어요다음을 변경하자 경고가 사라졌습니다.

templateUrl: 'views/mytemplate'

수정하겠습니다만, 이 문제는 제가 지시한 페이지가 루트 설정 함수의 "Views"가 아닌 "Views" 아래에 있기 때문에 발생했다고 생각합니다.

이 일은 에서도 나에게 일어났다.NET 및 MVC 5 및 잠시 후 Index.cshtml 파일의 라벨에 다음과 같은 내용이 있음을 알게 되었습니다.

<div data-ng-view=""></div>

섹션 스크립트가 발생할 때 다시 포함됩니다.서버 측의 문제를 해결하기 위해 제가 하는 일은 부분 보기를 되돌리는 것입니다.예를 들어 다음과 같습니다.

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Login()
    {
        return PartialView();
    }

    public ActionResult About()
    {
        return PartialView();
    }
}

index.html에 두 번 angularJs 파일을 포함시켰기 때문에 동일한 문제가 발생했습니다('Angular More Than 두 번 이상 로드 시도').

<script src="angular.js">
<script src="angular.min.js">

저도 같은 문제가 있어요. 왜냐하면angular에 두 번index.html:

<script src="https://handsontable.github.io/ngHandsontable/node_modules/angular/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>

경고는 다음 경우에만 발생합니다.html5mode는 true 입니다.html5모드는 false입니다.이 경고는 표시되지 않았습니다.

그래서 첫 번째를 제거하는 것은angular.js문제를 해결합니다.

각도 경로 '/!'를 변경해야 합니다.이는 '/' 기본 URL 요청 때문에 발생합니다.'/' => '/home' 또는 '/hede' 각도를 변경하는 것이 좋습니다.

앞으로 이 문제가 발생할 경우, 저는 이 문제가 함수 리터럴이 아닌 화살표 함수에 의해 발생했다고 생각합니다.run블록:

// bad
module('a').run(() => ...)

// good
module('a').run(function() {...})

제 경우 2개의 뷰(view1.html과 view2.html)를 포함하는 index.html이 있습니다.저는 index.html과는 독립적으로 이 2개의 뷰를 개발하여 루트를 사용하여 포함하려고 했습니다.그래서 이 경고의 원인이 되고 있는 2개의 뷰 html 파일에 모든 스크립트파일이 정의되어 있습니다.앵귤러 포함을 제거한 후 경고가 사라졌습니다.뷰의 JS 스크립트파일

즉, 스크립트파일 angularJS, jQuery 및 angular-route.js는 index.html에만 포함해야 하며 뷰 html 파일에는 포함되지 않아야 합니다.

또 다른 케이스는Webpack인덱스로부터 로드되는 각도 옆에 있는, 번들.download에 각도를 구성합니다.<script>태그를 붙입니다.

이것은 우리가 명시적인 수입품을 사용했기 때문입니다.angular많은 파일:

define(['angular', ...], function(angular, ...){

그래서 웹팩도 묶기로 했어요.이 모든 것을 다음과 같이 정리합니다.

define([...], function(...){

고치고 있었다Tried to Load Angular More Than Once단 한 번만.

문제는 다음 회선(HAML)이었습니다.

%a{"href"=>"#", "ng-click" => "showConfirmDeleteModal()"} Delete

내가 각진 거 알아?ng-click그리고 저는href로 점프하는 태그#같은 페이지입니다.난 그냥 그 부분을 제거해야만 했어href술래잡기만 하면 돼

문제는 컨트롤러(js) 파일을 백업하고 동일한 폴더에 다른 변경 사항을 추가한 후 번들로 컨트롤러 파일(원래 js와 백업 js)을 모두 로드했다는 것입니다.번들된 스크립트 폴더에서 백업을 삭제하면 문제가 해결되었습니다.

html에서 클로징태그를 놓쳐서 문제가 발생하였습니다.

여기에 이미지 설명 입력

그래서 다음 대신:

<table></table> 

..내 HTML은

<table>...<table>

위와 같이 angular 후에 jQuery를 로드하려고 했습니다.이로 인해 오류 메시지는 방지되었지만 실제로 문제를 해결하지는 못했습니다.그리고 jQuery '.find'는 나중에 제대로 작동하지 않았습니다.

해결 방법은 누락된 닫힘 태그를 수정하는 것이었습니다.

나도 똑같은 실수를 하고 있었다.몇 시간 후,에 여분의 콤마가 있는 것을 알았습니다.마지막 키와 값의 쌍에 있는 JSON 파일.

//doesn't work
{
    "key":"value",
    "key":"value",
    "key":"value",
}

그리고 나서 (마지막 ' ' )를 떼면 문제가 해결됩니다.

//works
{
    "key":"value",
    "key":"value",
    "key":"value"
}

언급URL : https://stackoverflow.com/questions/22595878/tried-to-load-angular-more-than-once

반응형