Web Worker onMessage является нулевым в IE11 - PullRequest
0 голосов
/ 15 декабря 2018

Я получаю сообщение об ошибке Обещание не определено в IE11 в моем приложении реакции.Когда я использую Worker в своем коде

    const worker = new Worker('./worker.ts')
console.log('worker' , worker);

Когда я проверяю журналы в Chrome и IE 11, Chrome возвращает работник onMessage как функцию, где IE 11 возвращает ноль, и я также вижу сообщение «Отказано в доступе».Я также получаю эту ошибку в IE 11 Обещание не определено.

Я импортировал импорт 'babel-polyfill' в начале файла.Все остальные Обещания работают нормально, кроме этого работника.

Может кто-нибудь, пожалуйста, помогите мне, как это исправить.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Исправлено, добавив import 'babel-polyfill' вверху worker.ts.

Примечание: я уже импортировал babel-polyfill в index.js.Но для работника я должен был добавить это снова.

0 голосов
/ 15 декабря 2018

React может быть несовместим сразу с IE,

Из официальной документации:

React поддерживает все популярные браузеры, включая Internet Explorer 9 и выше, хотя для старых версий требуются некоторые полифилы.браузеры, такие как IE 9 и IE 10.

Мы не поддерживаем старые браузеры, которые не поддерживают методы ES5, но вы можете обнаружить, что ваши приложения работают в более старых браузерах, если многозаполнения, такие как es5-shim и es5-sham включены в страницу.Вы сами по себе, если решите пойти по этому пути.


Чтобы приложение работало в IE (11 или 9), вам нужно установить React-app-polyfill:

https://www.npmjs.com/package/react-app-polyfill

Особенности:

Каждый полифилл обеспечивает наличие следующих языковых функций:

Promise (for async / await support)
window.fetch (a Promise-based way to make web requests in the browser)
Object.assign (a helper required for Object Spread, i.e. { ...a, ...b })
Symbol (a built-in object used by for...of syntax and friends)
Array.from (a built-in static method used by array spread, i.e. [...arr])

Использование

Сначала,установите пакет, используя Yarn или npm:

npm install react-app-polyfill

Теперь вы можете импортировать точку входа для минимальной версии, которую вы намереваетесь поддерживать.Например, если вы импортируете точку входа IE9, это будет включать поддержку IE10 и IE11.

Internet Explorer 9

// This must be the first line in src/index.js
import 'react-app-polyfill/ie9';

// ...

Internet Explorer 11

// This must be the first line in src/index.js
import 'react-app-polyfill/ie11';

// ...

Вы также можете настроить манифест для работы с различными браузерами, используя следующую документацию: https://github.com/browserslist/browserslist

пример:

"browserslist": [
    ">0.2%",
    "not dead",
    "ie >= 9"
]
...