我正在使用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>; } }
更新:在针对此问题的地狱之火中燃烧了三天后,我发现我没有使用最新版本的react。
全局安装:
sudo npm install -g [email protected]
在本地安装:
npm install [email protected]
确保浏览器也使用正确的版本:
<script type="text/javascript" src="react-0.13.2.js"></script>
希望这可以为他人节省三天的宝贵生命。
类名
首先,如果您确定要从正确命名的类扩展,例如 React.Component ,而不是React.component或React.createComponent,则可能需要升级React版本。有关扩展类的更多信息,请参见下面的答案。
升级React
从0.13.0版本开始,React只支持ES6样式的类(请参阅此处有关支持介绍的官方博客文章。
在此之前,使用时:
class HelloMessage extends React.Component
您试图使用ES6关键字(extends)来继承未使用ES6定义的类class。这可能是为什么您在super定义等方面遇到奇怪行为的原因。
extends
class
super
因此,是的, TL; DR- 更新到Reactv0.13.x。
循环依赖
如果您具有循环导入结构,也会发生这种情况。一个模块导入另一个模块,反之亦然。在这种情况下,您只需要重构代码来避免它。更多信息