针对reactjs的bundle.js中未捕获的错误

时间:2018-05-25 12:31:19

标签: javascript reactjs

我开始使用react js,构建我的第一个组件我遇到了这个错误

"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined."

我正在使用的编辑器是2017年的visual studio。

webpack.config.js的代码是

module.exports = {
  context: __dirname,
  entry: "./app.js",
  output: {
    path: __dirname + "/dist",
    filename: "bundle.js"
  },
  watch: true,
  module: {
    rules: [{
      test: /\.js$/,
      exclude: /node_modules/,
      use:
        {
          loader: 'babel-loader',
          options: {
            presets: ['babel-preset-env', 'babel-preset-react', ]
          }
        }
    }
    ]
  }
}

app.js

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
    <Button />,
    document.getElementById('root')
);

class Button extends React.Component {
    render() {
        return (<button>42</button>);
    }
}

我正在渲染的页面是index.cshtml

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index test</h2>

<div id="root"></div>

@section scripts{

    <script src="~/Scripts/React/dist/bundle.js"></script>
}

在我对app.js进行更改后,下一步是进入cmd提示符并执行npm运行webpack。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您在声明之前使用该组件。 这不起作用,因为javascript类不会被提升。 这应该工作

import React from 'react';
import ReactDOM from 'react-dom';

class Button extends React.Component {
    render() {
        return (<button>42</button>);
    }
}

ReactDOM.render(
    <Button />,
    document.getElementById('root')
);