我应该能够导出我的App组件文件并将其导入到index.js中。
我收到以下错误
React.createElement:类型无效-预期为字符串(对于内置组件)或类/函数(对于复合组件),但得到了:对象
const React = require('react');
const ReactDOM = require('react-dom');
const App = require('./components/App');
require('./index.css');
ReactDOM.render(
<App />,
document.getElementById('app')
);
const React = require('react');
export default class App extends React.Component {
render() {
return (
<div>
Hell World! Wasabi Sauce!
</div>
);
}
}
// module.exports = App;
如果我取消注释module.exports = App;
,它将起作用,但是我正在尝试使用导出语法。让我发疯的是在另一个项目中,我在这里做的完全相同,而且工作正常:(
您遇到的问题是由于将两个不同的模块系统混合在一起而导致的,这些模块系统的解决和实现方式不同。CommonJS模块是动态的,与ES6模块是静态可分析的相反。
由于尚未提供本机支持,因此像Babel这样的工具目前仍将ES6模块转换为CommonJS
。但是,存在细微的差异。通过使用默认导出(),编译器发出了一个具有属性的CommonJS模块,因为可以在ES6模块中命名和默认导出。以下示例是完全有效的ES6模块:exports default
{ default }
export default class Test1 { }
export class Test2 { }
{ default, Test2 }
在编译后,通过使用require
该对象作为返回值,将生成CommonJS模块。
为了在CommonJS中导入ES6模块的默认导出,您必须require(module).default
根据上述原因使用语法。
当导入的模块存在问题时,React尝试渲染组件时,此错误非常常见。大多数情况下,这是由于export
模块缺失或路径问题(相对路径是一个笑话)造成的,并且没有适当的工具,这可能会导致严重的头发拉扯。
在这种情况下,React无法呈现通用对象,{__esModule: true, default: function}
而只会引发错误。使用时require
,可以仅打印出所需的模块以查看其内容,这可能有助于调试问题。
附带说明,除非确实需要,否则请勿将CommonJS模块与ES6模块混合使用。import
/
export
语法为ES6模块保留。使用CommonJS模块时,只需使用module.exports
并使用require
即可将其导入。将来,大多数开发人员将使用标准模块格式。在此之前,将它们混合在一起时要小心。
我试图运行ReactRails应用程序,并试图运行一个非常简单的反应选择组件。但是,在同一个文件中,如果我只打印一个简单的元素,它可以工作,但是
我正在做一些关于React的教程。js和我对这是相当陌生的。我在仪表板上有这个代码。js 有问题的代码行如下:- 如果我设置newChatFormbVisible:false,我不会得到错误,但是将其设置为true会失败,并出现以下错误:- 指数js:1375警告:反应。createElement:type无效--应为字符串(对于内置组件)或类/函数(对于复合组件),但应为Get:object。您
Reactjs上下文提供程序错误 我得到以下错误 不变的js:42未捕获错误:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:对象。 这里是我的 这里是: 这是在反应16.3.2。有许多情况下,错误是由于默认与命名的出口,这似乎不是: 未捕获错误:不变冲突:元素类型无效:应为字符串(用于内置组件)或类/函数,但得到:object
我得到这个错误: 未捕获错误:不变冲突:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:对象检查的呈现方法。 这是我的应用程序。js 这是我的页面包装: 请帮忙!
问题内容: 我收到此错误: 未捕获的错误:始终违反:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件),但得到了:对象。 这是我的代码: 我的档案: 问题答案: 就我而言( 使用Webpack )是以下两者之间的区别: 与 第二个起作用,而第一个引起错误。或相反。
问题内容: 试图使react-router(v4.0.0)和react-hot-loader(3.0.0-beta.6)正常播放,但是在浏览器控制台中出现以下错误: 警告:React.createElement:类型无效- 预期为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记了从定义文件中导出组件。 index.js: route.js: 问题答案: 在大多数情况下,