reactjs给出错误Uncaught TypeError:超级expression式必须为null或函数,而不是未定义的
我正在使用reactjs。
当我在浏览器下面运行代码时说:
Uncaught TypeError:超级expression式必须为null或函数,而不是未定义的
任何暗示什么是错的将不胜感激。
首先是用来编译代码的行:
browserify -t reactify -t babelify examples/temp.jsx -o examples/public/app.js 和代码:
 var React = require('react'); class HelloMessage extends React.Component { render() { return <div>Hello </div>; } } 
更新:在这个问题上在地狱火燃烧三天后,我发现我没有使用最新版本的反应。
全局安装:
 sudo npm install -g react@0.13.2 
本地安装:
 npm install react@0.13.2 
确保浏览器也使用正确的版本:
 <script type="text/javascript" src="react-0.13.2.js"></script> 
希望这可以拯救别人三天的宝贵生命。
类名称
首先,如果您确定要从正确命名的类(例如React.Component ,而不是React.component或React.createComponent)进行扩展,则可能需要升级React版本。 请参阅下面的答案以获取有关要从中延伸的类的更多信息。
升级反应
自0.13.0版本以来,React只支持ES6风格的类(请参阅其官方博客上的支持介绍。
在此之前,使用时:
 class HelloMessage extends React.Component 
 您试图使用ES6关键字( extends )来从没有使用ES6 class定义的类进行子class 。 这可能就是为什么你用super定义的方式遇到奇怪的行为 
所以,是的, TL; DR – 更新到React v0.13.x.
循环依赖
如果您有循环导入结构,也会发生这种情况。 一个模块导入另一个,反过来。 在这种情况下,你只需要重构你的代码,以避免它。 更多信息
 这意味着你想要子类的东西,应该是Class ,但是undefined 。 原因可能是: 
-   Class extends ...,所以你扩展未定义的variables
-  在import ... from,所以你从模块导入undefined
-  引用的模块不包含值,你想导入(例如,过时的模块 – 与React的情况下),所以你导入不存在的价值( undefined)
-  在引用的模块export ...语句中input错误,所以它导出未定义的variables
-  所引用的模块完全缺lessexport语句,所以它的输出只是undefined
 它也可能是由于input错误造成的,所以不是使用大写C的Component ,而是使用较低的c component ,例如: 
 React.component //wrong. React.Component //correct. 
在我的情况下,与反应本土,错误是我有
 import React, { AppRegistry, Component, Text, View, TouchableHighlight } from 'react-native'; 
代替
 import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, Image, AsyncStorage } from 'react-native'; 
我错过了JSX类的导出语句时遇到过这种情况。
例如:
 class MyComponent extends React.Component { } export default MyComponent // <- add me 
 对于任何其他人,这可能会发展这个问题。 您也可以检查React.Component中的component方法是否大写。 我有同样的问题,是什么原因导致我写道: 
 class Main extends React.component { //class definition } 
我改变了
 class Main extends React.Component { //class definition } 
一切运作良好
 如果您试图在类定义中使用错误的()执行React.Component ,您也可以收到此React.Component 。 
 export default class MyComponent extends React.Component() {} ^^ REMOVE 
当我从一个无状态的function组件转换到一个类时,我有时可以做到这一点。
我有看到这个错误,当你有一个循环依赖。
 class A extends B {} class B extends C {} class C extends A {} 
当我在导入时遇到错字时,我得到了这个:
 import {Comonent} from 'react'; 
 检查你扩展的类实际上是否存在,很lessReact方法被折旧,也可能是一个Typo错误'React.Components'而不是'React.Component' 
祝你好运!!
 我有同样的问题,只需从Navigator到{Navigator} 
 import Navigator from 'react-native-deprecated-custom-components' // to import {Navigator} from 'react-native-deprecated-custom-components' 
我将提供另一个可能的解决scheme,一个为我工作的解决scheme。 我正在使用便利索引来收集所有组件到一个文件。
我不相信在撰写本文的时候,这是由babel正式支持的,并且把打字稿打成一个旋转 – 但是我已经看到它在很多项目中使用,绝对方便。
但是,当与inheritance结合使用时,似乎会抛出上述问题中提出的错误。
一个简单的解决scheme是,作为父母的模块需要直接导入,而不是通过便利的索引文件。
./src/components/index.js
 export Com1 from './com-1/Com1'; export Com2 from './com-2/Com2'; export Com3 from './com-3/Com3'; export Parent1 from './parent/Parent1'; 
./src/components/com-1/Com1.js
 import { Com2, Com3 } from '../index'; // This works fine class Com1 { render() { return ( <div> <Com2 {...things} /> <Com3 {...things} /> </div> ); } } 
./src/components/com-3/Com3.js
 import { Parent } from '../index'; // This does _not_ work class Com3 extends Parent { } 
./src/components/com-3/Com3.js
 import Parent from '../parent/Parent'; // This does work class Com3 extends Parent { } 
我的问题是我没有导出文件末尾的类…
 使用Babel(5.8)我得到相同的错误,如果我尝试使用expression式export default与其他export结合使用: 
 export const foo = "foo" export const bar = "bar" export default function baz() {} 
我写了
 React.component 
 而不是React.Component这是我的问题)),并正在寻找这个半小时以上。 
 如果你收到这个错误,正在使用Browserify和browserify -shim (就像在一个Grunt任务中一样),你可能会经历一个愚蠢的时刻,就像我无意中告诉browserify-shim把React当作已经是全局命名空间的一部分例如,从CDN加载)。 
 如果您希望Browserify将React作为转换的一部分,而不是单独的文件,请确保"react": "global:React"不出现在packages.json文件的"browserify-shim"部分。 
 如果您在代码中使用require而不是import ,也会发生这种情况。 
当我使用这个时,也发生在我身上:
 class App extends React.Component(){ } 
而不是正确的一个:
 class App extends React.Component{ } 
注意: – ()第一个是这个问题的主要原因
如果您有recursion导入,也会发生这种情况。
即ComponentA需要ComponentB,而ComponentB需要ComponentA。
这个答案不正确,但对于其他人有相同的错误我可笑的愚蠢的错误可能会有所帮助。
愚蠢的是,我的问题是通过 include ()跟在类名后面使用函数符号 。
确保你的语法是正确的。 而且您已经导入并导出了具有正确名称和path的任何外部组件/模块。
如果您安装了新版本的反应,此模板应该可以正常工作:
 import React, { Component } from 'react' class ExampleClass extends Component { render(){ return( <div> </div> ) } } export default ExampleClass 
在我的情况下,我写
类名扩展React.Compoment //而不是类名扩展React.Component