在另一React应用中引入React库内置Redux store报getState不是函数错误
问题排查与解决方案
你不需要为导出store单独加特殊webpack配置,导入无编译报错也不代表运行时拿到的是合法Redux store实例,store.getState is not a function报错的本质是你传入Provider的变量不是Redux生成的标准store对象,可按以下顺序排查:
第一步:先确认引入的store实际值
在你的应用代码里加一行打印,确认导入的内容结构:
import store from 'example-library' console.log('拿到的store:', store)
如果打印结果是{ default: [store实例] }的结构,说明是库的导出配置问题:
- 临时解决:改用
import * as lib from 'example-library',取lib.default作为store传入Provider即可 - 永久解决:修改example-library的打包配置,以webpack为例,在output配置中添加
libraryExport: 'default',确保外部导入时直接拿到default导出的内容,无需额外取default属性。
第二步:检查库的打包导出格式配置
确认你的example-library的打包配置中,output的libraryTarget设置为了umd或者commonjs2,适配宿主应用的模块引入规则。如果没有配置libraryTarget,打包后的库不会正确暴露导出内容,导致运行时拿到的是空对象或者非预期结构。
第三步:检查Redux版本一致性
如果你的example-library依赖的Redux版本和宿主应用安装的Redux版本大版本不一致,也可能出现实例结构不兼容的问题,将两边的Redux版本统一到同一个大版本即可解决。
第四步:规避tree-shaking误删
如果确认导出配置没问题,可以在库的store定义前添加纯标记,或者在package.json中把store所在的文件加入sideEffects列表,避免打包时store被意外tree-shaking移除:
/*#__PURE__*/ const store= createStore( rootReducer, initialState, composeEnhancers() )
内容的提问来源于stack exchange,提问作者anj-kr
相关产品推荐
相关产品推荐

