React-router error: super expression must either be null or a function

React-router error: super expression must either be null or a function

我是 react-router 的新手 (https://github.com/rackt/react-router)。我在这样反应后将其包括在内:

<script src="http://fb.me/react-0.12.2.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/reactrouter/0.13.2/ReactRouter.js"></script>

我收到一个错误: 未捕获的类型错误:超级表达式必须为 null 或函数,而不是未定义的

我做错了什么?

虽然这个问题已经解决了,但由于我遇到了类似的问题,所以我发布了一个解决方案。希望对其他人有所帮助。

我没有使用 React Router。我将 React 与 Webpack 一起使用,并将 Babel 作为加载器。我遇到了与 JustWonder 所述相同的错误。

我使用的是 ES6 类。原来,我输入了

class App extends React.component {...}

React.component 更改为 React.Component(大写 'C')解决了我的问题。

我通过将 React 版本升级到 0.13.3 解决了这个问题

npm install react@0.13.3

我遇到过另一种可能会出现这种情况的场景。

我有 v0.13.x 作为直接依赖项,而我的一个依赖项有 v0.12.x - 所以 React 的两个副本包含在我的包中。这意味着使用 ES6 类 的组件试图 extend 一个不存在的 React.Component(他们正在获取 React 的 v0.12.x)。

我通过查看我的 node_modules 中有多少份 React 来诊断这个问题:

npm ls | grep react@

这给了我以下结果:

├── react@0.13.3
│ └── react@0.12.2

grep-C 选项允许您查看周围的线条,所以我重新 运行:

npm ls | grep react@0.12.2 -C 5

周围的文字让我能够识别出有问题的包。