2015-11-20 2 views
53

У меня есть приложение reactjs, написанное с использованием стандартов ES6, и я использую webpack для его создания. webpack загружает модули js с использованием babel-loader. В частности, я использую следующие версии пакетов: ├── [email protected] ├── [email protected] ├── [email protected] └── [email protected]«Символ» не определен в IE после использования babel

Однако после его создания IE 10 дает следующую ошибку: 'Symbol' is undefined. Не следует ли, чтобы babel определял Symbol? Есть ли какая-либо конкретная конфигурация для webpack или babel Мне нужно установить, чтобы она работала? Я использую конфигурацию {stage: 0} в своем .babelrc.

Любая помощь будет оценена, Спасибо!

+1

Не могли бы вы также добавить stacktrace? –

ответ

41

Хорошо, я в конце концов узнал, что babel сам по себе не заполняет полипол. В том числе скрипт <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script> решил эту проблему для меня.

+3

есть метод, который я могу только вставить этот скрипт в HTML как: PinkyJie

+0

У меня была такая же проблема в IE11, и это исправило это и для меня. Благодаря! – Waterskier19

+0

@Jurom, Когда я добавляю этот файл в свой html, мой IE обрушивается :-(.Пожалуйста, помогите – Rahul

57

Вы можете потребовать полиполнения в точке входа в свой код, чтобы он был связан с остальной частью JavaScript.

Один из вариантов заключается в использовании:

require('babel-polyfill'); 

Или:

import 'babel-polyfill'; 

Все это объясняется в the documentation.

+2

Я боролся с этой ошибкой часами! THANK YOU –

+0

по какой-то причине это не работает для меня в IE10, IE11, поэтому я просто включаю его как отдельный скрипт для IE, как упоминал Jurom.Я, вероятно, разделил бы его от моего основного пакета в webpack в любом случае. –

+0

Здравствуйте @Jurom и @ Lukasz, я столкнулся с той же проблемой, что Symbol и его функции, такие как Symbol.Iterator, не определены в IE, используя эта страница Babel Polyfill моя страница не загружается, но возникает ошибка IE с просьбой перезагрузить. – Rahul

2

в документации о среде

// in bash 
npm install babel-transform-runtime --save-dev 

// in gulpfile 
.pipe(babel({ 
    plugins: ['transform-runtime'] 
})) 

редактировать: еще лучше на Heroku в режиме прод использовать --save вместо --save-DEV

0

ОК, я была такая же проблема, но в моем случае это было совсем по-другому, поэтому в основном вам нужно включить скрипт в индексный файл, как показано ниже:

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script> 

Но в моем случае, я уже включен, что после некоторого исследования я узнал, который мой прокси блокирует сценарий ...

Так убедитесь вы включите его в index.html, а также убедитесь, которые вам имеют доступ к скрипту, откуда вам нужно, чтобы избежать ошибки ...

Но теперь, когда мы дошли до этого, речь идет не о самом символе, а о символе, который не может быть распознан в IE?

Функция Symbol() возвращает значение символа типа, имеет статическое свойства, открывающие несколько членов встроенных объектов, имеют статические метод, открывающие глобальный реестр символов, и напоминает встроенных объект класса, но является неполным как конструктор, потому что он не поддерживает синтаксис «new Symbol()».

Каждое значение символа, возвращаемое символом(), уникально.Значение символа может использоваться как идентификатор свойств объекта; это данные цели только . Некоторые дополнительные пояснения о цели и использовании можно найти в записи глоссария для Symbol.

Символ типа данных является примитивным типом данных.

Смежные вопросы