reactjs给出错误Uncaught TypeError:超级表达式必须为null或函数

reactjs给出错误Uncaught TypeError:超级表达式必须为null或函数,而不是未定义

我正在使用reactjs。

当我运行下面的代码时,浏览器会说:

未捕获的TypeError:超级表达式必须为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>

希望这能为他人节省三天的宝贵生命。


jeck猫
浏览 914回答 3
3回答

慕尼黑的夜晚无繁华

班级名称首先,如果您确定要从正确命名的类扩展,例如React.Component,而不是React.component或React.createComponent,则可能需要升级React版本。有关要扩展的类的更多信息,请参阅下面的答案。升级React自版本0.13.0起,React仅支持ES6风格的类(请参阅此处有关支持介绍的官方博客文章。在此之前,使用时:class&nbsp;HelloMessage&nbsp;extends&nbsp;React.Component您试图使用ES6关键字(extends)从未使用ES6定义的类中继承子类class。这可能是您遇到super定义等奇怪行为的原因。所以,是的,TL; DR&nbsp;- 更新到React v0.13.x.循环依赖如果您具有循环导入结构,也会发生这种情况。一个模块导入另一个模块,反之亦然。在这种情况下,您只需要重构代码以避免它。更多信息

慕标琳琳

这意味着你想要子类,应该是Class,但是undefined。原因可能是:错字输入Class extends ...,所以你扩展未定义的变量错字输入import ... from,所以你undefined从模块导入引用模块不包含值,您想要导入(例如过时模块 - 使用React的情况),因此您导入非现有值(undefined)参考模块export ...语句中的拼写错误,因此它导出未定义的变量引用模块缺少export语句,所以它只导出undefined

慕容森

它也可能是由拼写错误引起的,所以不是Component使用大写C,而是component使用较低的c,例如:React.component //wrong.React.Component //correct.注意: 此错误的来源可能是因为存在React并且我们自动认为接下来的应该是以小写字母开头的react方法或属性,但实际上它是另一个Class(Component)应该以大写字母开头。
打开App,查看更多内容
随时随地看视频慕课网APP