开发者问题收集

routeWarning 导致无限循环

2016-01-13
124

当我将我们的应用从 Router 升级到 2.0.0-rc4 时,在“开发”模式下的 Chrome 浏览器中出现以下错误:

Uncaught RangeError: Maximum call stack size exceeded

在此处输入图片说明

这似乎来自 warning.js 中的无限循环。

这可以在我的应用程序中通过以下方式重现:

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

您很可能在 webpack 配置中的 resolve.modulesDirectories 中拥有 lib. 。请勿这样做 - 这会导致第三方库出现广泛问题。

taion
2016-01-13

看起来 react-router 需要名为 warning.js 的文件中 warning 包。这导致我的配置出现无限循环,因为 react-router 的 warning.js 需要的是自身,而不是包。

我能够通过在 package.json 中包含 "warning": "2.1.0" 并更改我的 resolve.modulesDirectories 以在任何其他目录之前包含 warning 包目录来解决此问题:

modulesDirectories: [
  path.join(__dirname, '..', '..', 'node_modules', 'warning'),
  "", "shared", "node_modules"
]
mgp
2016-01-13