programing

각도 2/4/5가 IE11에서 작동하지 않음

easyjava 2023. 2. 23. 23:08
반응형

각도 2/4/5가 IE11에서 작동하지 않음

왜 내 angular 2 app이 Loading...이라고 표시되는지 알아내려고 합니다.IE 11에서 실행할 경우.

누군가의 제안에 따라 Chrome과 IE 11 모두에서 스택 오버플로에 게시된 이 플런커를 사용해 보았습니다.Chrome에서는 정상적으로 동작하지만 IE 11에서는 동작하지 않는다.같은 에러로, 「로드중...」이라고 계속 말하고 있습니다.."

plunker는 https://plnkr.co/edit/6zVFbrH5yohwc714gBbk?p=preview 입니다.

<!DOCTYPE html>
<html>
  <head>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <title>Router Sample</title>
    <link rel="stylesheet" href="style.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.34.2/es6-shim.min.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.1/angular2-polyfills.js"></script>
    <script src="https://code.angularjs.org/tools/system.js"></script>
    <script src="https://code.angularjs.org/tools/typescript.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.1/Rx.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.1/angular2.dev.js"></script>
    <script src="https://code.angularjs.org/2.0.0-beta.1/http.dev.js"></script>
    <script>
      System.config({
        transpiler: 'typescript', 
        typescriptOptions: { emitDecoratorMetadata: true }, 
        packages: {'src': {defaultExtension: 'ts'}} 
      });
      System.import('src/boot')
            .then(null, console.error.bind(console));
    </script>
  </head>

  <body>
    <my-app>loading...</my-app>
  </body>

</html>

IE 11이 왜 angular 2 앱을 실행하지 못하는지 아는 사람?

감사해요!

의 최신 버전은 기본적으로 상록 브라우저에만 설정되어 있습니다.

현재 설정은 자동으로 자동 업데이트되는 브라우저의 마지막 버전인 이른바 "ervergreen" 브라우저용입니다.사파리 > = 10, 크롬 > = 55 (오페라), 엣지 > = 13, iOS 10 크롬 > 크롬 >
파이어폭스

브라우저 지원에 대한 자세한 내용은 특정 브라우저에 권장되는 폴리필 목록과 함께 여기를 참조하십시오.https://angular.io/guide/browser-support#polyfill-libs


This means that you 수동으로 have to enable the correct polyfills to get Angular working in IE11 and below.


위해서는, 「 」에 해 주세요.polyfills.ts (the (the)에서)src기본적으로 폴더) 및 다음 Import의 코멘트를 해제합니다.

/***************************************************************************************************
 * BROWSER POLYFILLS
 */

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
 import 'core-js/es6/symbol';
 import 'core-js/es6/object';
 import 'core-js/es6/function';
 import 'core-js/es6/parse-int';
 import 'core-js/es6/parse-float';
 import 'core-js/es6/number';
 import 'core-js/es6/math';
 import 'core-js/es6/string';
 import 'core-js/es6/date';
 import 'core-js/es6/array';
 import 'core-js/es6/regexp';
 import 'core-js/es6/map';
 import 'core-js/es6/set';

코멘트는 말 그대로 파일에 있기 때문에 쉽게 찾을 수 있습니다.

되지 않는 는, 「」를 할 수 .target을 property property로 설정합니다.es5tsconfig.json제안하신 대로입니다.이것이 하는 일은 컴파일 출력을 변경하는 것입니다.es6es5 뚱뚱한 의 기능(예: 뚱뚱한 화살의 기능)입니다.()=>{} 함수 「 」 「 」 「 」 )로.function(){}es6에서 지원되는 브라우저 목록은 여기에서 확인할 수 있습니다.


메모들

• 코멘트에서 다음과 같은 질문을 받았습니다.@jackOfAll사용자가 필요하지 않은 상록수 브라우저에 있더라도 IE11 폴리필이 로드되는지 여부.'먹다'다!하면 IE11 이 됩니다.~162KB로로 합니다.~258KB8일 .나는 이 문제를 해결하기 위해 투자했지만, 현재로서는 가능하지 않은 것 같다.

는, 「」의 「IE10」의 「IE10」의 「IE10」의 「IE10」의 「IE10」의 「IE10」의 「IE10」아래」의 「IE10」의 「IE10」에 액세스 합니다.package.jsonwebpack-dev-server로로 합니다.2.7.1체적적구이보다 높은 버전은 더 오래된 IE 버전을 지원하지 않게 되었습니다. IE 버 ie ie ie ie ie ie ie ie ie 。

저도 똑같은 문제가 있었는데 어떤 해결책도 제게는 효과가 없었습니다.html 아래있는 신홈홈홈홈 홈홈홈홈홈 홈음음html <head>쳤습니니다다

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

나는 오늘 이 문제에 부딪쳤다.저는 GitHub에서 최신 버전의 베타로 이동할 필요가 없는 솔루션을 찾았습니다.

다음 스크립트를 html에 추가합니다.

<script src="node_modules/angular2/es6/dev/src/testing/shims_for_IE.js"></script>

이것으로 나는 그 문제를 해결했다.상세한 것에 대하여는, 다음의 URL 를 참조해 주세요.https://github.com/angular/angular/issues/7144

2017년 2월 현재

Angular-Cli 프로젝트를 사용하여 의 모든 라인polyfills.ts파일이 이미 컴파일 되어 있지 않기 때문에 모든 폴리필이 이미 사용되고 있었습니다.

문제를 해결하기 위해 이 솔루션을 찾았습니다.

위의 링크를 요약하면 IE는 es6의 특징인 람다 애로우/팻 애로우 기능을 지원하지 않습니다(는 polyfules.ts가 적합하지 않은 경우입니다).

해결 방법: IE 버전에서 실행하려면 es5를 대상으로 해야 합니다. 이 지원은 Microsoft가 새로운 Edge Browser에서만 도입했습니다.

이것은 아래에 있습니다.src/tsconfig.json:

"outDir": "../dist/out-tsc",
"sourceMap": true,
"target": "es5",

대상 브라우저의 polyfules.ts 파일을 적절한 섹션의 코멘트를 해제하여 조정해야 합니다.

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';

iexplor 11과 Angular 2를 사용하는 경우 위의 모든 문제를 다음 두 가지 방법으로 해결했습니다.

in index.displays add:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

src\polyfiles.ts uncommentment:

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';
  1. polyfill.ts 파일에서 Import의 코멘트를 해제합니다.

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';

npm pacakages 설치댓글에 npm install 명령어가 포함되어 있습니다.Angular CLI의 초기 버전을 사용하는 경우 세 번째 버전이 있을 수 있습니다.Angular CLI 버전7, 6, 및 1.7의 경우 다음을 실행해야 합니다.

npm install --save classlist.displays

npm install --save web-animations-displays

이제 IE를 열고 응용 프로그램을 렌더링하고 체크합니다.

2018/05/15 편집:이것은 메타 태그로 할 수 있습니다.이 태그를 index.html에 추가하고, 이 투고는 무시해 주세요.

이 질문에 대한 완전한 답변은 아닙니다(기술적인 답변은 위의 @Zze의 답변을 참조해 주세요).다만, 중요한 순서를 추가할 필요가 있습니다.

호환성 모드

적절한 폴리필을 사용하더라도 IE11에서 폴리필을 사용하여 Angular 2+ 앱을 실행하는 데 문제가 있습니다.인트라넷 호스트에서 사이트를 실행하고 있는 경우(즉,IE11의 호환성 뷰는 ES5 폴리필링의 Angular에 포함되어 있는 몇 가지 규칙을 위반하기 때문에 http://localhost 또는 다른 매핑된 로컬 도메인 이름에서 테스트하는 경우 호환성 뷰 설정으로 이동하여 "호환성 뷰에 인트라넷 사이트 표시"를 꺼야 합니다.

여기에 이미지 설명 입력

2017년 9월 현재(node version=v6.11.3, npm version=3.10.10)에는 다음과 같은 이점이 있습니다(@Zze 감사).

★★polyfills.tsIE11의 Import.

더 는 편집해 .polyfills.ts (에)src기본적으로 폴더) 및 IE11에 필요한 모든 행의 코멘트를 해제합니다(파일 내의 코멘트는 IE11에서 실행하는 데 필요한 Import를 정확하게 설명합니다).

작은 경고: 다음 행의 코멘트를 해제할 때는 주의해 주십시오.classlist.js ★★★★★★★★★★★★★★★★★」web-animations-js하기 전에 않으면 됩니다. 이들 코멘트된 행에는 각각 특정 코멘트가 있습니다.코멘트를 해제하기 전에 관련된npm 명령어를 실행해야 합니다.polyfules.ts 다리다

설명하자면 폴리필은 이를 지원하지 않는 웹 브라우저에 기능을 구현하는 코드 조각입니다.이것이 디폴트 polyfiles.ts 설정에서는 최소한의 Import 세트만 활성화 되는 이유입니다(이거는 이른바 "Evergreen" 브라우저,자동으로 업데이트되는 브라우저의 마지막 버전을 대상으로 하기 때문입니다).

저는 Angular4 어플리케이션을 가지고 있는데 IE11 브라우저에서도 동작하지 않습니다.아래에서 변경을 가하여 정상적으로 동작하고 있습니다.index.html 파일에 다음 코드를 추가합니다.

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

폴리 매립 파일에서 아래 줄의 코멘트를 해제하기만 하면 됩니다.

import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';
import 'core-js/es6/array';
import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/set';

위의 2단계로 문제가 해결됩니다.무슨 일이 있으면 알려주세요.감사합니다!!!

일부 JavaScript 기능이 작동하지 않는 문제가 해결되지 않으면 폴리필에 이 행을 추가합니다.누락된 '값' 방법을 수정합니다.

import 'core-js/es7/object';

이 행은 누락된 '포함' 방법을 수정합니다.

import 'core-js/es7/array'

같은 문제가 있었습니다만, Compatibility View(호환성 보기)에서 Display intranet sites(인트라넷 사이트 표시)를 유효하게 하고 있는 경우, polyfiles.ts는 동작하지 않습니다.또, 지시대로 다음의 행을 추가할 필요가 있습니다.

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

(「」)tsconfig.json

"target":"es5",

나의 문제를 해결했다.

IE 11 1의 애플리케이션 퍼포먼스를 향상시키기 위해서, 다음의 순서에 따라서 작업을 실시했습니다.Index.html 파일에 다음 CDN을 추가합니다.

<script src="https://npmcdn.com/angular2@2.0.0- 
 beta.17/es6/dev/src/testing/shims_for_IE.js"></script>
<script 
src="https://cdnjs.cloudflare.com/ajax/libs/classlist/1.2.201711092/classList.min.js"></script>

2) polyfules.ts 파일에 다음 Import를 추가합니다.

import 'core-js/client/shim';

폴리필리먼트 내.ts.

import 'core-js/es6/symbol';
import 'core-js/es6/object';
import 'core-js/es6/function';
import 'core-js/es6/parse-int';
import 'core-js/es6/parse-float';
import 'core-js/es6/number';
import 'core-js/es6/math';
import 'core-js/es6/string';
import 'core-js/es6/date';

import 'core-js/es6/array';
import 'core-js/es7/array';

import 'core-js/es6/regexp';
import 'core-js/es6/map';
import 'core-js/es6/weak-map';
import 'core-js/es6/weak-set';
import 'core-js/es6/set';

/** IE10 and IE11 requires the following for NgClass support on SVG elements */
 import 'classlist.js';  // Run `npm install --save classlist.js`.

/** Evergreen browsers require these. **/
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';

/**
 * Required to support Web Animations `@angular/animation`.
 * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
 **/
import 'web-animations-js';  // Run `npm install --save web-animations-js`.

다른 솔루션이 모두 효과가 없는 경우 문제의 원인을 조사할 필요가 있습니다.npm 모듈이 ES6 코드를 직접 삽입하는 것보다 더 많은 경우가 있습니다.

저 같은 경우에는

SCRIPT1002: 다음 행의 구문 오류 vendor.js(114536,27)

const ucs2encode = array => String.fromCodePoint(...array);

node_modules 폴더를 검색하여 행이 어느 파일에서 왔는지 확인했습니다.범인은 2.1.0 버전에서는 ES6를 직접 사용하는 punycode.js로 판명되었습니다.

ES5를 사용하는 1.4.1로 다운그레이드 하면 문제가 해결되었습니다.

Angular8에서 이 문제를 해결하는 방법

polypules.ts 언코멘트import 'classlist.js'; ★★★★★★★★★★★★★★★★★」import 'web-animations-js'; 개의 을 npm install --save classlist.js ★★★★★★★★★★★★★★★★★」npm install --save web-animations-js

tsconfig.json"target":"es5",

ng serve합니다.

  1. src/polyfill.js의 IE 섹션 주석 해제,

    /** IE10 및 IE11에서는 SVG 요소에서의 NgClass 지원을 위해 다음이 필요합니다*/

    'classlist.disc' Import;

  2. 누락된 패키지에 대한 빌드 오류가 있을 경우,

    npm install classlist.syslog --save-module

  3. 기본 IE 문서 모드를 설정하려면 아래 줄을 포함해야 합니다.그렇지 않으면 버전 7에서 열립니다.

 <meta http-equiv="X-UA-Compatible" content="IE=edge" />

1단계: 폴리 매립지에 코멘트 없이 충전한다.또한 polyfules.ts 파일에 기재되어 있는npm install 명령어를 모두 실행하여 패키지를 설치합니다.

순서 2: 브라우저 목록에서 IE 9-11 지원이 언급된 행 앞에 파일을 삭제합니다.

스텝 3: tsconfig.json 파일에서 "target"과 같이 변경합니다: "es2015"에서 "target"으로: "es5"

이러한 절차로 문제가 해결되었습니다.

나는 이 스레드의 모든 솔루션과 다른 솔루션들을 시도해 보았지만 성공하지 못했다.결국 이 문제를 해결하게 된 것은 메이저버전 변경을 포함한 프로젝트의 모든 패키지를 갱신하는 것이었습니다.그래서:

  1. 오래된 npm 실행
  2. 패키지를 갱신합니다.결과에서 현재 열에 표시된 숫자의 json(프로젝트가 중단될 수 있으므로 주의)
  3. npm 설치 실행
  4. 다른 답변에 기재된 폴리필름도 비컴팩트하게 처리했습니다.

바로 그겁니다.어느 도서관이 범인인지 정확히 알아낼 수 있으면 좋겠다.실제로 발생한 에러는 Angular 6의 vendor.js의 "Syntax Error"입니다.

IE11에서는 개봉 후 각도 9가 완벽하게 작동합니다.

여기에 나와 있는 모든 제안을 시도해 봤지만 효과가 없었습니다., 「Import」에서 하고 했습니다.app.module )ZXingScannerModule() 할 경우 오류에서 되었습니다.첫 페이지의 IE11에서 앱이 실패할 경우 라이브러리를 하나씩 제거하고 IE11에 체크인을 해보십시오. 빌드 경고 오류에서 완전히 누락되었습니다.이 경우 이 라이브러리를 느린 부하 모듈로 사용하는 사이트의 영역을 구분하는 것을 고려해 주십시오.

polyfiles.core-js lib에서 을 사용합니다 이 .target을 매기다es5 tsconfig.base.json

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
import 'core-js/es/symbol';
import 'core-js/es/object';
import 'core-js/es/function';
import 'core-js/es/parse-int';
import 'core-js/es/parse-float';
import 'core-js/es/number';
import 'core-js/es/math';
import 'core-js/es/string';
import 'core-js/es/date';
import 'core-js/es/array';
import 'core-js/es/regexp';
import 'core-js/es/map';

언급URL : https://stackoverflow.com/questions/35140718/angular-2-4-5-not-working-in-ie11

반응형