Saya memiliki reactjs
aplikasi yang ditulis menggunakan standar ES6, dan saya gunakan webpack
untuk membangunnya. The webpack
beban yang js
modul menggunakan babel-loader
. Untuk lebih spesifik, saya menggunakan versi paket berikut:
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
Namun, setelah membangunnya, IE 10 memberikan kesalahan berikut 'Symbol' is undefined
. Bukankah babel
seharusnya yang mendefinisikan Symbol
? Apakah ada konfigurasi khusus untuk webpack
atau babel
saya perlu mengatur agar dapat berfungsi? Saya menggunakan {stage: 0}
konfigurasi di file.babelrc
.
Bantuan apa pun akan dihargai, Terima kasih!
Jawaban:
Anda dapat meminta polyfill di titik masuk ke kode Anda agar dapat digabungkan dengan JavaScript lainnya.
Salah satu opsinya adalah menggunakan:
require('babel-polyfill');
Atau:
import 'babel-polyfill';
Semua itu dijelaskan dalam dokumentasi .
sumber
babel-polyfill
memperbaiki masalah ini untuk saya. Terima kasih!import "@babel/polyfill";
pernyataan itu sebelumnyaimport 'zone.js/dist/zone';
(yang masuk akal karena kesalahan Simbol yang saya dapatkan berasal dari zone.js)Oke, akhirnya saya menemukan bahwa
babel
saja tidak ada polyfill. Termasuk skrip<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>
memecahkan masalah ini untuk saya.sumber
Solusi ini akan bekerja dengan pasti, itu berhasil untuk saya ketika saya mengalami kesalahan: 'Simbol' tidak ditentukan di IE. Ini bekerja sebelumnya di Chrome dan Firefox tetapi IE melakukan kesalahan ini. Butuh beberapa jam untuk menemukan solusi ini. Saya menggunakan React terbaru saat ini react "react": "^ 16.5.0" pada mesin windows.
1. Install babel-polyfill npm install --save-dev babel-polyfill In package.json, it should have the following entries "devDependencies": { "babel-core": "^6.26.3", "babel-loader": "^8.0.2", "babel-polyfill": "^6.26.0", "babel-preset-react": "^6.24.1" } 2. In index.js, add import babelPolyfill from 'babel-polyfill';
Masalah harus diselesaikan
sumber
Oke, saya mengalami masalah yang sama, tetapi dalam kasus saya itu sangat berbeda, jadi pada dasarnya Anda perlu memasukkan skrip dalam file indeks seperti di bawah ini:
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>
Tetapi dalam kasus saya, saya sudah memasukkannya, setelah beberapa penyelidikan saya menemukan bahwa proxy saya memblokir skrip ...
Jadi pastikan Anda memasukkannya ke dalam index.html dan juga pastikan bahwa Anda memiliki akses ke skrip dari mana Anda membutuhkannya untuk menghindari kesalahan terjadi ... cara terbaik cukup salin dan tempel url di browser ...
Tapi sekarang kita sampai pada poin ini, itu tidak berbicara tentang Simbol itu sendiri, Simbol apa yang tidak dapat dikenali di IE?
sumber
dalam dokumentasi tentang Runtime
// in bash npm install babel-transform-runtime --save-dev // in gulpfile .pipe(babel({ plugins: ['transform-runtime'] }))
edit: lebih baik lagi tentang heroku dalam mode prod, gunakan --save daripada --save-dev
sumber
@babel/plugin-transform-runtime
Jika Anda mendapatkan kesalahan ini di aplikasi Angular, Anda perlu menghapus komentar baris berikut di polyfills.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';
sumber