Ответ 1
Хорошо, я в конце концов выяснилось, что babel
в одиночку не делает polyfill. Включая скрипт <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>
решил эту проблему для меня.
У меня есть приложение reactjs
, написанное с использованием стандартов ES6, и я использую webpack
для его создания. webpack
загружает модули js
с помощью babel-loader
. Чтобы быть конкретным, я использую следующие версии пакетов: ├── [email protected] ├── [email protected] ├── [email protected] └── [email protected]
Однако, после его создания, IE 10 дает следующую ошибку: 'Symbol' is undefined
. Разве не следует полагать, что babel
должен определить Symbol
? Есть ли какая-либо конкретная конфигурация для webpack
или babel
мне нужно установить, чтобы заставить ее работать? Я использую {stage: 0}
конфигурацию в моем .babelrc
.
Любая помощь будет оценена, спасибо!
Хорошо, я в конце концов выяснилось, что babel
в одиночку не делает polyfill. Включая скрипт <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>
решил эту проблему для меня.
Вы можете потребовать полифонию в точке входа к вашему коду, чтобы он был связан с остальной частью JavaScript.
Один из вариантов - использовать:
require('babel-polyfill');
Или:
import 'babel-polyfill';
Все это объясняется в документации.
в документации о времени выполнения
// in bash
npm install babel-transform-runtime --save-dev
// in gulpfile
.pipe(babel({
plugins: ['transform-runtime']
}))
edit: еще лучше на герою в режиме prod используйте --save вместо --save -dev
Хорошо, у меня была такая же проблема, но в моем случае это было совсем по-другому, поэтому в основном вам нужно включить скрипт в индексный файл, как показано ниже:
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>
Но в моем случае я уже включил, что после некоторых исследований выяснилось, что мой прокси заблокировал скрипт...
Поэтому убедитесь, что вы включили его в index.html, а также убедитесь, что у вас есть доступ к скрипту, откуда вам нужно, чтобы избежать ошибки... лучший способ просто скопировать и вставить URL-адрес в браузере...
Но теперь, когда мы дошли до этого, это не говорит о самом Симбре, какой Символ, который не может быть распознан в IE?
Функция Symbol() возвращает значение символа типа, имеет статические свойства, которые выставляют несколько членов встроенных объектов, имеет статические методы, которые выставляют глобальный реестр символов и напоминают встроенный класс объектов, но неполны как конструктор, потому что он не поддерживает синтаксис "new Symbol()".
Каждое значение символа, возвращаемое из Symbol(), уникально. Значение символа может использоваться как идентификатор свойств объекта; это тип данных только для целей. Некоторые дополнительные пояснения о цели и использовании можно найти в записи глоссария для Symbol.
Символ типа данных является примитивным типом данных.
Это решение будет работать точно, это сработало для меня, когда я столкнулся с ошибкой: "Символ" не определен в IE. Ранее он работал в Chrome и Firefox, но IE выбрасывал эту ошибку. Мне потребовалось несколько часов, чтобы найти это решение. Я использую последний Реакт, в это время реагирую "реагировать": "^ 16.5.0" на машине 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';
Проблема должна быть решена