反应和流星“未捕获的TypeError:无法读取未定义的属性'createElement'

时间:2018-07-18 20:06:47

标签: meteor

我已经看过之前提出的问题,并且已经完成了所有建议的操作:

  • 从组件的import语句中删除大括号
  • 导入的没有大括号的React
  • 我用大括号试过了

index.hmtl

<head>
    <title>My ChatApp</title>
</head>

<body>
    <div id="app"></div>
</body>

index.js

import { Meteor } from "meteor/meteor";
import React from "react";
import { render } from "react-dom";

import ChatComponent from "../../ui/App";

Meteor.startup(() => {
  render(<ChatComponent />, document.getElementById("app"));
});

App.js

import { React, Component } from "react";

class ChatComponent extends Component {
  constructor(props) {
    super(props);
    this.state = {};
  }
  render() {
    return <h1>Try Chatting</h1>;
  }
}

export default ChatComponent;

我仍然从第9行(即“返回”行)的App.js文件中收到错误“未捕获的TypeError:无法读取未定义的属性'createElement'”。如果我将ChatComponent更改为一个函数而不是一个类,它将起作用,但是在文档中有反应说它没有区别。我也尝试将类的构造函数部分注释掉/一起删除,但没有任何效果。我有点茫然为什么这不起作用。为什么它不能作为课程使用?

1 个答案:

答案 0 :(得分:1)

您要在App.js中将此导入行用于React:

import React, { Component } from 'react';

其原因是jsx语法被编译成React.createElement调用。

因此错误Cannot read property 'createElement' of undefined告诉您React未定义。

在React包中,React是默认导出,因此不能在花括号中导入