Saya mencoba mencari tahu mengapa aplikasi sudut 2 saya macet saat menampilkan Memuat ... saat berjalan di IE 11.
Mengikuti saran seseorang, saya telah mencoba plunker ini, yang diposting oleh seseorang di stack overflow, di chrome dan IE 11. Berfungsi dengan baik di Chrome, tetapi gagal di IE 11. Kesalahan yang sama, berhenti saat mengatakan "Memuat ..."
Plunkernya adalah: 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>
Ada yang tahu mengapa IE 11 gagal menjalankan aplikasi sudut 2?
Terima kasih!
angular
typescript
internet-explorer
Pat Bone Crusher Laplante
sumber
sumber
Jawaban:
Versi terbaru
angular
hanya diatur untuk browser evergreen secara default ...Lihat di sini untuk informasi lebih lanjut tentang dukungan browser bersama dengan daftar polyfill yang disarankan untuk browser tertentu. https://angular.io/guide/browser-support#polyfill-libs
Ini berarti Anda secara manual harus mengaktifkan polyfill yang benar agar Angular berfungsi di IE11 dan di bawahnya.
Untuk mencapai ini, masuk ke
polyfills.ts
(dalamsrc
folder secara default) dan hapus komentar impor berikut ini:Perhatikan bahwa komentar tersebut benar-benar ada di dalam file, jadi ini mudah ditemukan.
Jika Anda masih mengalami masalah, Anda dapat downgrade
target
properti untukes5
ditsconfig.json
sebagai@MikeDub
disarankan. Apa yang dilakukannya adalah mengubah keluaran kompilasi daries6
definisi apa pun menjadies5
definisi. Misalnya, fungsi panah lemak (()=>{}
) akan dikompilasi menjadi fungsi anonim (function(){}
). Anda dapat menemukan daftar browser yang didukung es6 di sini .Catatan
• Saya ditanya di kolom komentar
@jackOfAll
apakah IE11 polyfill dimuat bahkan jika pengguna menggunakan browser evergreen yang tidak membutuhkannya. Jawabannya adalah, ya! Dimasukkannya polyfill IE11 akan mengubah file polyfill Anda dari~162KB
hingga~258KB
8 Agustus '17. Saya telah berinvestasi untuk mencoba memecahkan masalah ini, tetapi tampaknya tidak mungkin untuk saat ini.• Jika Anda mendapatkan kesalahan di IE10 dan yang lebih lama, buka Anda
package.json
dan turunkan versiwebpack-dev-server
ke2.7.1
secara khusus. Versi yang lebih tinggi dari ini tidak lagi mendukung versi IE "lama".sumber
Saya memiliki masalah yang sama persis dan tidak ada solusi yang berhasil untuk saya. Alih-alih menambahkan baris berikut di (beranda) .html di bawah
<head>
memperbaikinya.sumber
Saya mengalami masalah ini hari ini. Saya menemukan solusi di GitHub yang tidak memerlukan versi beta yang lebih baru.
Tambahkan skrip berikut ke html Anda:
Ini menyelesaikan masalah saya. Untuk lebih jelasnya, Anda dapat mengikuti masalah github di sini: https://github.com/angular/angular/issues/7144
sumber
Mulai Feb 2017
Menggunakan proyek Angular-Cli , semua baris dalam
polyfills.ts
file sudah tidak diberi komentar sehingga semua polyfill sudah digunakan.Saya menemukan solusi ini di sini untuk memperbaiki masalah saya.
Untuk meringkas link di atas, IE tidak mendukung fungsi lambda arrow / fat arrow yang merupakan fitur es6 . ( Ini jika polyfills.ts tidak bekerja untuk Anda ).
Solusi : Anda perlu menargetkan es5 agar dapat berjalan di versi IE apa pun, dukungan untuk ini hanya diperkenalkan di Edge Browser baru oleh Microsoft.
Ini ditemukan di bawah
src/tsconfig.json
:sumber
.ts
file Anda dari menggunakan panah gemuk ke fungsi anon. Saya pikir Anda harus memotong kutipan dari tautan itu tentang bagaimana keluaran kompiler berbeda jika Anda mengubah target skrip ecma yang selanjutnya mengurangi masalah.sumber
Bagi saya dengan iexplorer 11 dan Angular 2, saya memperbaiki semua masalah di atas dengan melakukan 2 hal:
di index.html tambahkan:
di src \ polyfills.ts hapus komentar:
sumber
ERROR Error: Uncaught (in promise): TypeError: Object doesn't support property or method 'setPrototypeOf' at EmptyError (http://localhost:4200/vendor.js:102653:9)
Instal npm Pacakages Perhatikan ada beberapa perintah npm install di komentar. Jika Anda menggunakan Angular CLI versi awal, mungkin juga ada versi ketiga. Untuk Angular CLI versi 7, 6, dan 1.7 Anda perlu menjalankan:
npm install --simpan classlist.js
npm install --save web-animations-js
sekarang buka IE dan render aplikasi Anda dan periksa :)
sumber
Pada September 2017 (versi node = v6.11.3, versi npm = 3.10.10), inilah yang berhasil untuk saya (terima kasih @Zze):
Edit
polyfills.ts
dan hapus komentar impor yang diperlukan untuk IE11.Lebih tepatnya, edit
polyfills.ts
(terletak disrc
folder secara default) dan hapus komentar semua baris yang diperlukan untuk IE11 (komentar di dalam file menjelaskan dengan tepat impor apa yang diperlukan untuk dijalankan di IE11).Peringatan kecil: perhatikan saat menghapus komentar pada baris untuk
classlist.js
danweb-animations-js
. Baris komentar ini memiliki komentar khusus masing-masing: Anda harus menjalankan perintah npm terkait sebelum menghapus komentarnya atau pemrosesan polyfills.ts akan rusak.Sebagai penjelasan, polyfills adalah potongan kode yang mengimplementasikan fitur pada web browser yang tidak mendukungnya. Inilah sebabnya mengapa dalam konfigurasi polyfills.ts default hanya sekumpulan impor minimal yang aktif (karena ini ditujukan pada apa yang disebut browser "evergreen"; versi terakhir dari browser yang secara otomatis memperbarui dirinya sendiri ).
sumber
EDIT 2018/05/15 : Ini dapat dicapai dengan tag meta ; harap tambahkan tag itu ke index.html Anda dan abaikan kiriman ini.
Ini bukan jawaban lengkap untuk pertanyaan (untuk jawaban teknis silakan merujuk ke jawaban @ Zze di atas ), tetapi ada langkah penting yang perlu ditambahkan:
MODE KOMPATIBILITAS
Bahkan dengan polyfill yang sesuai, masih ada masalah dengan menjalankan aplikasi Angular 2+ menggunakan polyfill di IE11. Jika Anda menjalankan situs dari inang intranet (mis. Jika Anda mengujinya di http: // localhost atau nama domain lokal lain yang dipetakan), Anda harus masuk ke pengaturan Tampilan Kompatibilitas dan menghapus centang "Tampilkan situs intranet dalam Tampilan Kompatibilitas", karena Tampilan Kompatibilitas IE11 melanggar beberapa konvensi yang disertakan dalam polyfill ES5 untuk Angular.
sumber
Saya memiliki aplikasi Angular4, bahkan untuk saya juga tidak berfungsi di browser IE11, saya telah melakukan perubahan di bawah ini, sekarang berfungsi dengan benar. Cukup tambahkan kode di bawah ini di file index.html
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Hanya Anda perlu menghapus komentar baris di bawah ini dari file polyfills.ts
2 langkah di atas ini akan menyelesaikan masalah Anda, beri tahu saya jika ada masalah. Terima kasih!!!
sumber
Jika Anda masih memiliki masalah yang tidak semua fungsi JavaScript berfungsi, tambahkan baris ini di polyfill Anda. Ini memperbaiki metode 'nilai' yang hilang:
Dan baris ini memperbaiki metode 'include' yang hilang:
sumber
Saya mengalami masalah yang sama, jika Anda telah mengaktifkan Tampilkan situs intranet dalam Tampilan Kompatibilitas, polyfills.ts tidak akan berfungsi, Anda masih perlu menambahkan baris berikut seperti yang telah diberitahukan.
sumber
berubah
tsconfig.json
memecahkan masalah saya
sumber
Apa yang berhasil bagi saya adalah saya mengikuti langkah-langkah berikut untuk meningkatkan kinerja aplikasi saya di IE 11 1.) Di file Index.html, tambahkan CDN berikut
2.) Dalam file polyfills.ts dan tambahkan impor berikut:
sumber
sumber
Jika tidak ada solusi lain yang berhasil untuk Anda, ada baiknya menyelidiki sumber masalahnya. Mungkin lebih dari modul npm yang langsung memasukkan kode ES6, yang tidak dapat ditranspilasi.
Dalam kasus saya, saya memiliki file
SCRIPT1002: Kesalahan sintaks vendor.js (114536,27) di baris berikut ini:
Saya mencari folder node_modules dan menemukan dari file mana baris itu berasal. Ternyata pelakunya punycode.js yang di versi 2.1.0-nya langsung menggunakan ES6.
Setelah saya menurunkannya menjadi 1.4.1, yang menggunakan ES5, masalah terselesaikan.
sumber
Cara mengatasi masalah ini di Angular8
polyfills.ts hapus komentar
import 'classlist.js';
danimport 'web-animations-js';
kemudian instal dua ketergantungan menggunakannpm install --save classlist.js
dannpm install --save web-animations-js
.memperbarui
tsconfig.json
dengan"target":"es5",
kemudian
ng serve
jalankan aplikasi dan buka di IE, itu akan berfungsisumber
Hapus komentar pada bagian IE di src / polyfill.js,
/ ** IE10 dan IE11 membutuhkan yang berikut ini untuk dukungan NgClass pada elemen SVG * /
import 'classlist.js';
Jika ada kesalahan versi untuk paket yang hilang,
npm install classlist.js --save-exact
Pastikan untuk menyertakan baris di bawah ini untuk mengatur mode dokumen IE default. Jika tidak, itu akan terbuka di versi 7
sumber
Saya mencoba setiap solusi di utas ini serta banyak dari yang lain, tetapi tidak berhasil. Apa yang akhirnya memperbaiki ini untuk saya adalah memperbarui setiap paket dalam proyek saya, termasuk perubahan versi MAYOR. Begitu:
Itu dia. Saya berharap saya bisa menunjukkan perpustakaan mana yang menjadi pelakunya. Kesalahan sebenarnya yang saya dapatkan adalah "Kesalahan Sintaks" di vendor.js di Angular 6.
sumber
Angular 9 di luar kotak seharusnya berfungsi dengan baik di IE11 sekarang.
Saya mencoba semua saran yang tercantum di sini dan tidak ada yang berhasil. Namun saya berhasil melacaknya ke perpustakaan tertentu yang saya impor
app.module
(ZXingScannerModule
tepatnya). Jika aplikasi Anda gagal di IE11 pada halaman pertama, coba hapus perpustakaan satu per satu dan periksa di IE11 - itu benar-benar tidak terjawab di semua kesalahan peringatan build saya. Jika Anda menemukan ini masalahnya, pertimbangkan untuk memisahkan area situs Anda yang menggunakan pustaka ini sebagai modul yang dimuat lambat.sumber