新建一个项目,并且在项目中使用antd前端框架的Menu组件时报错,具体错误信息如下图:
image.png
代码如图:
image.png
NPM的报错信息:
image.png
you have multiple copies of React loaded(你有多个副本的反应加载)
分析一波,这个报错简单来说是引入了两个react,可能的情况如下
1.peerDependencies配置错误,导致版本重复 通常是在插件(modules)开发的场景下,你的插件需要某些依赖的支持,但是你又没必要去安装, 因为插件的宿主会去安装这些依赖,你就可以用peerDependencies去声明一下需要依赖的插件和版本, 如果出问题npm就会有警告来提醒使用者去解决版本冲突问题。
so,简单的来说:就是插件所使用的依赖包不会直接安装,而会直接使用宿主的依赖包
"peerDependencies": {
"react": "^0.14.0 || ^15.0.0-rc",
"react-dom": "^0.14.0 || ^15.0.0-rc"
}
2.插件开发,使用webpack打包,然后通过 HTML script 引入了react.js 和 react-dom.js 和 插件(例如这里的dist/CFRichEditor.js) , 这时候webpack就应该把react,react-dom排除在打包之外。否则会重复 webpack配置:
externals: {
"react": 'React', // 这时候,webpack会创建一个全局变量 React 替代react模块,而不去打包react.js。
'react-dom': 'ReactDOM' // 同理
}
解决办法:
是因为我之前在项目中安装了其它版本的react包,而antd组件自动引入了自身所需要的react包,这样导致不同版本的两个react运行
网友评论