Получение объекта не поддерживает ошибку «записи» свойства или метода, даже когда я добавляю polyfill - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь загрузить свое веб-приложение на IE11 со следующей browserslist конфигурацией в пакете. json

"browserslist": {
 "production": [
   ">0.2%",
   "not dead",
   "not op_mini all"
 ],
 "development": [
   ">0.1%",
   "not dead",
   "not op_mini all"
 ]
}

и со следующими инструкциями в начале src/index.tsx

import 'react-app-polyfill/ie11';
import 'react-app-polyfill/stable';

Но я получаю сообщение об ошибке SCRIPT438: Object doesn't support property or method 'entries'. Чтобы преодолеть это, я прочитал сообщение SO по адресу Объект не поддерживает свойство или метод 'entry' , но безрезультатно.

Я попытался установить yarn add core-js, но при попытке сделать import 'core-js/es7/object'; сборка завершается ошибкой, говоря, что модуль не существует. Что мне здесь делать? Чего мне не хватает?

1 Ответ

1 голос
/ 03 апреля 2020

Я пытался установить yarn add core- js, но когда я пытаюсь выполнить импорт 'core-js / es7 / object'; сборка завершается ошибкой, говоря, что модуль не существует. Что мне здесь делать? Чего мне не хватает?

Возможно, проблема связана с версией core- js. В моем приложении реакции оно использует core-js@3.0.1 версию, оно не содержит папку es7, и если я использую метод Object.entries (), он хорошо работает в IE11 (не добавляет полифил, возможно, он уже добавляет ссылку на объект). ).

enter image description here

Кроме того, я также проверил мое другое приложение, оно использует версию core- js 2.6.1, и мы можем увидеть core- Папка js содержит пакет es7, вы также можете проверить версию ядра - js:

enter image description here

Попробуйте указать эту ссылку для обновления core- js версии:

Кроме того, вы также можете добавить следующий скрипт в заголовок Index. html. Это также хорошо работает в браузере IE11.

    <script>
    if (!Object.entries) {
      Object.entries = function( obj ){
        var ownProps = Object.keys( obj ),
            i = ownProps.length,
            resArray = new Array(i); // preallocate the Array
        while (i--)
          resArray[i] = [ownProps[i], obj[ownProps[i]]];

        return resArray;
      };
    }
    </script>
...