奇怪的React.createElement错误(不变违规)

时间:2017-03-04 05:13:53

标签: reactjs webpack mocha react-router

我收到一个错误,在mocha中测试我的组件时无法解释。相关代码是:

  console.error('Index', Index, typeof Index);
  let ind = TestUtils.renderIntoDocument(<Index />);

正在制作:

  

错误:&#39;索引&#39;,功能索引(){...},&#39;功能&#39;

     

错误:&#39;警告:React.createElement:type无效 - 期望一个字符串(对于内置组件)或类/函数(对于复合组件)但得到:object。您可能忘记从其定义的文件中导出组件。请检查Index的渲染方法。&#39;

所以似乎第一行Index是一个函数,在下一行,它现在是一个对象。

我以前从未见过这种错误,也不能为我的生活开始猜测是什么导致了它。我使用的是webpack和react-router,但我不确定这些错误是如何与此错误相关的(相同的设置之前从未引起过这种错误)。

什么可能导致我的组件类型从一行更改为下一行?或者至少,什么可能导致React.createElement认为它已经改变了?

编辑:

发现错误。错误不是Index.jsx错误似乎意味着的方式。错误发生在Index在其render方法中导入和呈现的组件中。

1 个答案:

答案 0 :(得分:1)

大多数时候这种情况发生(对我而言)是因为你没有正确导出/导入。

常见错误(对我来说):

// File: LeComponent.js
export class LeComponent extends React.Component { ... }

// File: App.js
import LeComponent from './LeComponent';

// no "default" export, should be  export default class LeComponent

有几种方法可能是错误的,但这种错误是因为每次都有60%的时间导入/导出错误。