Приложение IE не может реагировать, работает в IE11: Недопустимая поддержка `children` передана в` Provider` - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть приложение реагирования, к которому нужно добавить поддержку IE11. Он работает, но есть ошибка, которая делает приложение непригодным для использования.

Консоль жалуется, что тип пропора неправильный (на что не жалуется другой браузер):

Invalid prop `children` supplied to `ModalProvider`

Я подозреваю, что проблема в Symbol (неправильно) не заполнена поскольку, когда я регистрирую объект props.children, он говорит что-то о Symbol и undefined, и в StackOverflow есть много других проблем, описывающих Symbol, IE11 и polyfill. Смотрите скриншот ниже:

enter image description here

Я пробовал множество различных описанных решений, но не могу удалить эту ошибку, и поэтому заставляю приложение работать должным образом. У тебя есть идеи? 101

Проект

Во-первых, проект состоит из двух отдельных проектов реагирования, где один (простое приложение-сценарий реакции, которое просто отображает импортированный / связанный компонент, позволяет называть его A ) ссылки на другие (комплексный экспортируемый модуль, назовем его B ). Так что я не совсем уверен, какой из них должен быть заполнен, или оба.

Webpack.config.js для B :
var path = require('path')

module.exports = {
  entry: {
    maps: './src/index.js'
  },
  output: {
    path: __dirname + '/dist',
    filename: 'index.js',
    library: 'Map',
    libraryTarget: 'umd'
  },
  module: {
    rules: [
      {
        test: /\.[s]?css$/,
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              importLoaders: 1,
              modules: true,
              localIdentName: '[local]--[sha1:hash:hex:4]'
            }
          },
          'sass-loader'
        ],
        include: /\.module\.[s]?css$/
      },
      {
        test: /\.[s]?css$/,
        use: ['style-loader', 'css-loader', 'sass-loader'],
        exclude: /\.module\.[s]?css$/
      },
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: ['babel-loader']
      },
      {
        test: /\.svg$/,
        use: ['@svgr/webpack']
      },
      {
        test: /\.(jpe?g|png)$/i,
        loader: 'file-loader?name=/public/icons/[name].[ext]'
      }
    ]
  },
  resolve: {
    modules: [
      path.resolve(__dirname, 'src'),
      path.resolve(__dirname, 'node_modules')
    ],
    extensions: ['.js', '.jsx']
  },
  externals: {
    // Use external version of React
    react: 'react',
    'react-dom': 'react-dom'
  },
  // NOTE: @claus added options to fix files not being watched
  watchOptions: {
    aggregateTimeout: 300,
    poll: 1000
  }
}
package.json список браузеров для B :
"browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all",
      "ie 11"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version",
      "ie 11"
    ]
  }
.babelrc для B :
{
  "presets": [
    ["@babel/preset-env"],
    "@babel/preset-react"],
  "plugins": ["@babel/plugin-proposal-object-rest-spread"]
}

1 Ответ

0 голосов
/ 14 февраля 2020

Вы выполнили следующие шаги для поддержки приложения реакции в IE 11?

  1. Установите пакет: npm install react-app-polyfill.
  2. Добавьте import 'react-app-polyfill/ie11'; import 'react-app-polyfill/stable'; в первой строке в источник / индекс. js.
  3. Добавить ie 11 в упаковке. json как это:

enter image description here

Вы можете перезапустить ваше приложение, и оно будет работать в IE11.

И я думаю, вам следует заполнить оба реагирующих проекта, чтобы они оба были совместимы с IE 11. Если ошибка все еще сохраняется было бы лучше, если бы вы предоставили минимальный воспроизводимый образец , чтобы мы могли проводить испытания на наших сторонах.

...