2016-01-13 75 views
0

我收到以下錯誤在Chrome瀏覽器中的「發展」模式,而從路由器升級我們的應用程序到2.0.0 RC4:routeWarning造成無限循環

Uncaught RangeError: Maximum call stack size exceeded

enter image description here

這看起來是來自warning.js的無限循環。

這可以在我有以下應用再現:

import routerWarning from 'react-router/lib/warning' 
routerWarning(true, 'a test message') 

回答

0

你最有可能在resolve.modulesDirectories要麼lib.在你的WebPack配置。不要這樣做 - 它會在第三方庫中造成廣泛的問題。

+0

我modulesDirectories是:'modulesDirectories:「」 ,「shared」,「node_modules」]' – mgp

+0

我認爲你是正確的,它是一個加載問題。當我在我的源代碼中運行require('warning')'時,我可以看到它正在從警告包加載,但在react-路由器的'warning.js'內部,同樣'require('warning')'正在加載(導致無限循環)。不幸的是,我不確定如何解決這個問題。 – mgp

+0

你需要從'modulesDirectories'中刪除'''' - 這是非常不安全的,當這種事情發生時會隨機破壞。 – taion

0

它看起來像react-router需要warning包在名爲warning.js的文件中。這在我的配置中導致無限循環,因爲反應路由器的warning.js需要它自己而不是要求包。

我可以通過在我的package.json "warning": "2.1.0"和改變我resolve.modulesDirectories包括任何其他前warning包目錄,以解決此問題:

modulesDirectories: [ 
    path.join(__dirname, '..', '..', 'node_modules', 'warning'), 
    "", "shared", "node_modules" 
]