react-router 无法解析模块历史,缺少 lib 文件夹
Posted
技术标签:
【中文标题】react-router 无法解析模块历史,缺少 lib 文件夹【英文标题】:react-router cannot resolve module history, missing lib folder 【发布时间】:2017-03-21 21:41:52 【问题描述】:我正在创建一个新的 React 项目,但在 react-router
和 history
之间存在依赖问题:
ERROR in ./~/react-router/lib/match.js
Module not found: Error: Cannot resolve module 'history/lib/Actions' in /app/node_modules/react-router/lib
@ ./~/react-router/lib/match.js 15:15-45
ERROR in ./~/react-router/lib/useRouterHistory.js
Module not found: Error: Cannot resolve module 'history/lib/useQueries' in /app/node_modules/react-router/lib
@ ./~/react-router/lib/useRouterHistory.js 6:18-51
ERROR in ./~/react-router/lib/createMemoryHistory.js
Module not found: Error: Cannot resolve module 'history/lib/useQueries' in /app/node_modules/react-router/lib
@ ./~/react-router/lib/createMemoryHistory.js 6:18-51
ERROR in ./~/react-router/lib/useRouterHistory.js
Module not found: Error: Cannot resolve module 'history/lib/useBasename' in /app/node_modules/react-router/lib
@ ./~/react-router/lib/useRouterHistory.js 10:19-53
ERROR in ./~/react-router/lib/createMemoryHistory.js
Module not found: Error: Cannot resolve module 'history/lib/useBasename' in /app/node_modules/react-router/lib
@ ./~/react-router/lib/createMemoryHistory.js 10:19-53
ERROR in ./~/react-router/lib/browserHistory.js
Module not found: Error: Cannot resolve module 'history/lib/createBrowserHistory' in /app/node_modules/react-router/lib
@ ./~/react-router/lib/browserHistory.js 5:28-71
ERROR in ./~/react-router/lib/hashHistory.js
Module not found: Error: Cannot resolve module 'history/lib/createHashHistory' in /app/node_modules/react-router/lib
@ ./~/react-router/lib/hashHistory.js 5:25-65
ERROR in ./~/react-router/lib/createMemoryHistory.js
Module not found: Error: Cannot resolve module 'history/lib/createMemoryHistory' in /app/node_modules/react-router/lib
@ ./~/react-router/lib/createMemoryHistory.js 14:27-69
我正在使用 react-router
最新版本 3.0.0
,它在其 package.json
中具有 history
3.0.0
作为依赖项。
我正在使用npm
版本3.10.8
,即使history
模块是由react-router
依赖安装的,我也将它添加到我的package.json
中,如react-router
文档中所述。
事情是react-router
在history/lib/
中搜索它的需求,而history
模块在history/
中有它的文件(没有lib
文件夹)。
由于它不依赖于我的配置/安装,而是依赖于第三方模块,我不知道该怎么做,我很惊讶没有发现任何与此相关的问题。
【问题讨论】:
可以尝试删除node_modules文件夹,然后运行npm install。 @ShubhamKhatri 已经尝试了所有基本的东西,例如清理、重新安装等。没有任何改进,历史模块没有任何我尝试过的 lib 文件夹 【参考方案1】:问题其实是按照react-router
安装说明,在我们自己的package.json
中添加history
模块。
自行安装history
的最新版本而不是react-router
所需的版本会造成此冲突。
对于react-router
>= 3.0,history
是具有固定版本要求的依赖项,与react-router
本身一起安装:
└─┬ react-router@3.0.0
└── history@3.2.1
无需在package.json
中手动安装,如果您没有指定正确的所需版本,则会产生冲突。
感谢@ShubhamKhatri 为我指明了这个方向。
【讨论】:
是的,你说得对。当我将历史记录升级到最新版本时,它发生在我身上。我必须将其降级为 history@3.2.1 才能修复它。似乎“lib”目录在 3.2.1 之后被删除了【参考方案2】:如果您使用的 npm 版本高于 3.0.0 。
请注意,您还需要安装 history
软件包,因为它是 React Router
的对等依赖项,并且不会在低于 3.0.0 的 npm 版本中自动为您安装。
运行npm install history
,你应该会很好。
【讨论】:
我已经知道了,我在 package.json 中添加了history
。无论如何,该模块存在,这不是这里的问题,问题是react-router
在调用history
库时引用了错误的路径
答案实际上是完全相反的,但是感谢您,我进一步调查了模块版本和要求并找到了解决方案【参考方案3】:
路径需要更新它不再是
历史/lib/createHashHistory
只是
历史/createHashHistory
React Training Link
也可能从 react-route-dom 导入 HashRouter。 HashRouter 取代了 Router,不再需要将 history 作为 prop 传递。
【讨论】:
以上是关于react-router 无法解析模块历史,缺少 lib 文件夹的主要内容,如果未能解决你的问题,请参考以下文章
react-router 和 typescript 抛出“无法解析 'react-router-dom'”错误