React hook组件打包失败的一次记录
解决方案
本地运行好的React组件,想要发布组件包供他人使用,但是打包发布之后,使用时出现 https://reactjs.org/docs/error-decoder.html/?invariant=321
在排除使用hook的语法错误后,就可以判断是多版本问题。当配置了peerDependencies 防止本地重新下载React之后,应该是webpack出现了问题,需要在Externals外部扩展中配置下React相关。
externals 配置选项提供了「从输出的 bundle 中排除依赖」的方法。防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖(external dependencies)。这些描述就很符合我们的需求,所以我们配置上
externals: {
react: {
root: 'React',
commonjs2: 'react',
commonjs: 'react',
amd: 'react'
},
'react-dom': {
root: 'ReactDOM',
commonjs2: 'react-dom',
commonjs: 'react-dom',
amd: 'react-dom'
}
},
大功告成