我有一个我需要添加IE11支持的React应用。它正在运行,但是出现错误,导致该应用无法使用。
控制台抱怨道具类型不正确(其他浏览器没有抱怨):
Invalid prop `children` supplied to `ModalProvider`
[我怀疑问题是Symbol
没有(正确地)填充,因为当我登录props.children
对象时,它说的是关于Symbol
和undefined
的内容,并且StackOverflow上还有许多其他问题描述Symbol
,IE11和polyfill。请参见下面的屏幕截图:
我尝试了描述的许多不同解决方案,但无法消除此错误,因此可以使应用正常运行。你有什么想法? 😊
首先,该项目是两个单独的react项目,其中一个(仅显示导入/链接的组件的简单react-scripts应用程序,叫它A)链接到另一个(复杂的导出模块,让我们调用B)。因此,我不确定要填充其中的哪一个,或两者都不确定。
B的Webpack.config.js
: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
}
}
[[B的package.json
浏览器列表:"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"
]
}
B的
.babelrc
:{
"presets": [
["@babel/preset-env"],
"@babel/preset-react"],
"plugins": ["@babel/plugin-proposal-object-rest-spread"]
}