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