【问题标题】:React-router error: super expression must either be null or a function反应路由器错误:超级表达式必须为空或函数
【发布时间】:2015-06-09 17:16:14
【问题描述】:

我是 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>

我收到一个错误: Uncaught TypeError: Super expression must be null or a function, not undefined

我做错了什么?

【问题讨论】:

  • 你尝试过更新版本的 React 吗?现在在0.13.1
  • 谁抛出错误?反应,反应路由器,其他javascript代码?您在哪个浏览器中看到错误?
  • 它是最新版 Chrome 浏览器上的 react-router。
  • 我将 React 更新到 0.13.1,问题就消失了。感谢 WiredPrairie。

标签: reactjs react-router


【解决方案1】:

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

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

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

class App extends React.component {...}

React.component 更改为React.Component(大写“C”)为我解决了这个问题。

【讨论】:

  • 这该死的东西也解决了我的问题。如果您拼写错误“React.Component”,您似乎会收到该错误。而且它区分大小写,所以请注意。
  • 我会用组件而不是组件
【解决方案2】:

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

npm install react@0.13.3

【讨论】:

  • 啊,谢谢!我还必须将我的 react-router 更改为 0.13.3。
  • 我有 0.14.7,但我遇到了这样的问题
  • @Edward: 你更新 react 路由器到最新版本了吗?
【解决方案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

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

【讨论】:

    猜你喜欢
    • 2019-07-11
    • 2016-09-23
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多