使用history库报错:history.createBrowserHistory is not a function(React.js)
解决TypeError: (0 , _history.createBrowserHistory) is not a function问题(使用history@1.17.0时)
你遇到的报错核心原因是history@1.17.0这个旧版本的导出机制和你写的ES模块命名导入不兼容。
为什么会报错?
history库在v4版本之后才支持createBrowserHistory这类命名导出,而你用的v1.17.0是非常早期的版本——它直接将创建浏览器history的函数作为模块的默认导出,并没有提供createBrowserHistory这个命名导出项。所以当你用import { createBrowserHistory } from 'history'时,实际上拿到的是undefined,调用它自然会报"不是函数"的错误。
两种解决方案
方案1:升级history版本(推荐)
旧版本的history不仅导出方式老旧,还可能存在兼容性问题和bug,升级到稳定版是更优选择:
- 先卸载旧版本:
npm uninstall history - 安装适配React项目的稳定版本(比如v4,和大多数React Router版本兼容性更好):
或者直接安装最新版:npm install history@4npm install history
升级完成后,你原来的代码不需要任何修改,就能正常运行:
import { createBrowserHistory } from 'history'; export const historyHelper = createBrowserHistory();
方案2:适配v1.x的导出方式(仅用于无法升级的场景)
如果因为某些原因不能升级版本,你需要改为默认导入的方式:
import createBrowserHistory from 'history'; export const historyHelper = createBrowserHistory();
或者用CommonJS的写法:
const createBrowserHistory = require('history'); export const historyHelper = createBrowserHistory();
内容的提问来源于stack exchange,提问作者S.M_Emamian
相关产品推荐
相关产品推荐

