2015-04-04 48 views
13

我是新来的反应路由器(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或一个函数,而不是不确定的

我做了什么错?

+3

您是否尝试过使用较新版本的React?现在是0.13.1。 – WiredPrairie 2015-04-04 22:53:19

+0

谁引发错误?反应,反应路由器,其他JavaScript代码?你在哪个浏览器中看到错误? – Cristik 2015-04-05 14:47:59

+0

这是最新版Chrome浏览器的反应路由器。 – JustWonder 2015-04-06 14:21:17

回答

7

我sloved通过升级问题反应版本0.13.3

npm install [email protected] 
+0

啊谢谢你!我还必须将我的反应路由器更改为0.13.3。 – cport1 2015-07-18 22:57:08

+0

我有0.14.7,我有这样的问题 – Onza 2016-02-15 12:31:08

+0

@爱德华:你有没有更新反应路由器还最新版本? – pashaplus 2016-02-15 12:48:55

115

尽管已经解决,但我发布了一个解决方案,因为我有类似的问题。希望这会对别人有所帮助。

我没有使用React路由器。我用Webpack使用React,Babel作为加载器。正如JustWonder所述,我遇到了同样的错误。

我正在使用ES6类。事实证明,我输入了

class App extends React.component {...} 

更改React.componentReact.Component(大写“C”)解决了这个问题对我来说。

+0

这该死的东西也解决了我的问题。好像你会拼错“React.Component”会得到那个错误。并且它是区分大小写的,所以请注意它们。 – 2016-01-31 10:28:13

+0

我把组件而不是组件 – Tom 2016-02-08 13:39:13

1

我也遇到过这个地方可能会出现另一种情况。

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

我看诊断这个问题的反应多少副本在我node_modules

npm ls | grep [email protected] 

这给了我下面的结果:

├── [email protected] 
│ └── [email protected] 

-C选项grep让你看到所以我重新跑:

npm ls | grep [email protected] -C 5 

周围的文字使我能够识别违规包裹。

相关问题