我正在使用ReactJS。

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

Uncaught TypeError:超级表达式必须为null或函数,不能为undefined

任何关于哪里出了问题的提示都会让我感激不尽。

首先是用来编译代码的行:

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 react@0.13.2

在本地安装:

npm install react@0.13.2

确保浏览器使用正确的版本:

<script type="text/javascript" src="react-0.13.2.js"></script>

希望这能挽救别人三天宝贵的生命。


当前回答

我也有同样的问题因为"反应时刻"

将其替换为'moment'库

其他回答

这里有一个答案:

import React, { Component } from 'react'; // NOT 'react-dom'

在我的例子中,我通过更改导出默认类yourComponent extends React. component(){}来导出默认类yourComponent extends React。组件{}。 是的,删除括号()修复了错误。

它也可能是由拼写错误引起的,所以你有一个小写C的Component,而不是大写C的Component,例如:

React.component //wrong.
React.Component //correct.

注意: 这个错误的来源可能是因为有React,我们自动认为接下来应该是一个React方法或属性,以小写字母开头,但实际上它是另一个类(组件),应该以大写字母开头。

Webpack 4块和哈希与TerserPlugin Uglification

当Webpack通过TerserPlugin(当前版本为1.2.3)使用块和散列并进行缩小和unlification时,就会发生这种情况。在我的例子中,这个错误被缩小到我的供应商的Terser Plugin .[contenthash].js包的丑陋化,它包含了我的node_modules。不使用哈希值时一切正常。

解决方案是在uglification选项中排除bundle:

optimization: {
  minimizer: [
    new TerserPlugin({
      chunkFilter: (chunk) => {
        // Exclude uglification for the `vendors` chunk
        if (chunk.name === 'vendors') {
          return false;
        }
        return true;
      },
    }),
  ],
}

更多信息

将import React从' React -dom '改为import React, {Component} 并更改类Classname扩展React。组件到类Classname扩展组件 如果你正在使用React的最新版本(目前是16.8.6)。