"Символ" не определен в IE после использования babel



у меня есть 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.



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

758   5  

5 ответов:

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

один из вариантов-использовать:

require('babel-polyfill');

или:

import 'babel-polyfill';

все это объясняется в документация.

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

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

// 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 (), уникально. Значение символа может использоваться в качестве идентификатора свойств объекта; это данные единственная цель типа. Некоторые дополнительные объяснения о назначении и использовании можно найти в глоссарии запись для символа.

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

Это решение будет работать наверняка, это сработало для меня, когда я столкнулся с ошибкой: "символ" не определен в IE . Он работал ранее в Chrome и Firefox, но IE бросал это error.It мне потребовалось несколько часов, чтобы найти это решение. Я использую последний реагирует на это отреагировали вовремя "среагировать": "^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';

проблема должна быть решена

Comments

    Ничего не найдено.