升级到react-scripts v5并不总是解决方案。
描述了此错误的完整原因here。简而言之,这是一个brief概括:
该错误是由于react-error-overlay
(许多人从未听说过,因为它是react-scripts
)。该软件包的依赖项已更新以支持webpack
v5,不幸的是它不兼容react-scripts
v4.
方法1(覆盖包版本)
如果升级到react-scripts
v5 不适合您,您还可以尝试另一种解决方法,即固定react-error-overlay
到版本6.0.9
:
删除你的yarn.lock
or package-lock.json
,然后再次安装您的依赖项。
使用纱线
纱线将开箱即用地考虑分辨率字段。
"resolutions": {
"//": "See https://github.com/facebook/create-react-app/issues/11773",
"react-error-overlay": "6.0.9"
}
For 纱线工作区,将上面的分辨率放在根目录下package.json
,不在有问题的文件夹中。看到这个issue评论。
使用 npm (>=v8.3.0)
相当于resolutions
对于 npm 来说是overrides
.
"overrides": {
"react-error-overlay": "6.0.9"
},
使用 npm (
你需要确保npm
使用resolutions
当你跑步时的田地npm install
。要自动化安装,看到这个answer
方法2(使用webpack插件)
另一种(不太流行)的解决方法是使用 webpack 插件:
plugins:[
new webpack.DefinePlugin({
process: {env: {}}
})
]
如果你使用craco(v6.3.0+),你只需要修改你的craco.config.js
文件来添加该插件:
{
...
webpack: {
plugins: {
add: [
new webpack.DefinePlugin({
process: {env: {}}
})
]
}
}
}
For customize-cra用户请看这个answer或这个github评论.
最后一种方法并不流行,因为没有多少 CRA 用户需要直接接触 webpack 来使用 React。