2016-11-08 68 views
4

我創建一個新的陣營項目,我有react-routerhistory之間的依賴問題:反應路由器無法解析模塊的歷史,缺少lib文件夾

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其中有history3.0.0作爲其package.json中的依賴項。 我使用npm版本3.10.8,即使history模塊安裝了react-router依賴關係,我也將它添加到我的package.json中,正如react-router文檔中所述。

的事情是react-router正在尋找其需要history/lib/history模塊在history/(無lib文件夾),其文件。

因爲它不依賴於我的配置/安裝,但依賴於第三方模塊,所以我不知道該怎麼做,而且我很驚訝沒有發現任何關於此的問題。

+0

您可以嘗試刪除node_modules文件夾,然後運行npm install。 –

+0

@ShubhamKhatri已經嘗試了所有基本的東西,如清潔,重新安裝等。沒有改進,歷史模塊沒有lib文件夾,無論我嘗試過 – Sylver

回答

11

問題實際上是按照react-router安裝說明,在我們自己的package.json中加入history模塊。

自行安裝最後一個版本的history而不是react-router所要求的版本正在產生這種衝突。

隨着react-router> = 3.0,history是一個固定的版本需求的依賴,react-router本身一起安裝:

└─┬ [email protected] 
    └── [email protected] 

沒有必要在你的package.json,它會創建衝突手動安裝它,如果你不沒有指定正確的所需版本。

感謝@ShubhamKhatri指導我朝這個方向發展。

+1

是的,你是對的。當我將歷史升級到最新版本時,發生在我身上。我必須將其降級爲[email protected]才能解決此問題。在版本3.2.1之後,似乎已經刪除了「lib」目錄 –

2

如果您使用的npm版本大於3.0.0。

請注意,您還需要安裝history程序包,因爲它是React Router的同位體依賴項,不會在npm版本freater中自動爲您安裝,而不是3.0.0版本。

運行npm install history你應該很好。

+1

我已經知道了,並且在我的package.json中添加了'history' 。在任何情況下,模塊都存在,這不是問題,問題是'react-router'在調用'history'庫時引用了錯誤的路徑 – Sylver

+1

答案實際上是做相反的事,但是由於你我調查了模塊的版本和要求,並找到解決方案 – Sylver

1

的路徑需要更新,它不再是

歷史/ lib目錄/ createHashHistory

這只是

歷史/ createHashHistory

React Training Link

也可能從react-route-dom導入HashRouter。 HashRouter取代了路由器,並且不再需要傳遞歷史作爲道具。

相關問題