当前位置: 首页 > 面试题库 >

React.createElement:类型无效-预期为字符串

宗政鸿志
2023-03-14
问题内容

试图使react-router(v4.0.0)和react-hot-loader(3.0.0-beta.6)正常播放,但是在浏览器控制台中出现以下错误:

警告:React.createElement:类型无效-
预期为字符串(对于内置组件)或类/函数(对于复合组件),但得到:未定义。您可能忘记了从定义文件中导出组件。

index.js:

import React from 'react';
import ReactDom from 'react-dom';
import routes from './routes.js';
require('jquery');
import 'bootstrap/dist/css/bootstrap.min.css';
import 'bootstrap/dist/js/bootstrap.min.js';
import './css/main.css';

const renderApp = (appRoutes) => {
    ReactDom.render(appRoutes, document.getElementById('root'));
};

renderApp( routes() );

route.js:

import React from 'react';
import { AppContainer } from 'react-hot-loader';
import { Router, Route, browserHistory, IndexRoute } from 'react-router';
import store from './store/store.js';
import { Provider } from 'react-redux';
import App from './containers/App.jsx';
import Products from './containers/shop/Products.jsx';
import Basket from './containers/shop/Basket.jsx';

const routes = () => (

    <AppContainer>
        <Provider store={store}>
            <Router history={browserHistory}>
                <Route path="/" component={App}>
                    <IndexRoute component={Products} />
                    <Route path="/basket" component={Basket} />
                </Route>
            </Router>
        </Provider>
    </AppContainer>

);

export default routes;

问题答案:

在大多数情况下,这是由于错误的导出/导入。

常见错误:

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

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

可能的选择:

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

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

有几种方法可能会出错,但是该错误是由于每次60%的导入/导出不匹配。

编辑

通常,您 应该 获得一个指示故障发生位置的大概位置的堆栈跟踪。通常,在您原始问题中的信息出现之后,通常会紧随其后。

如果未显示,则可能值得调查原因(可能是您缺少的构建设置)。无论如何,如果它不显示,唯一的行动方针是缩小 其中 的导出/导入失败。

遗憾的是,没有堆栈跟踪的唯一方法是手动删除每个模块/子模块,直到不再收到错误,然后再按照自己的方式备份堆栈。

编辑2

通过注释,这确实是一个导入问题,特别是导入一个不存在的模块



 类似资料:
  • 问题内容: 预期 我应该能够导出我的App组件文件并将其导入到index.js中。 结果 我收到以下错误 React.createElement:类型无效-预期为字符串(对于内置组件)或类/函数(对于复合组件),但得到了:对象 我的index.js 然后在我的components / App.js中 如果我取消注释,它将起作用,但是我正在尝试使用导出语法。让我发疯的是在另一个项目中,我在这里做的完

  • 我在玩代码。我在GitHub上找到的(https://github.com/avijeets/ConnectFour)被一个我无法清除的错误彻底难住了。 错误是: "无法将“[[CFCellState]]”类型的值转换为预期的参数类型“Int”" VC顶部的代码,其中定义了: 发生错误的代码:

  • 我刚刚尝试为我的一个项目生成已签名的apk(我以前已经这样做了),但是(可能是在更新Android Studio之后)我得到了一些支持 错误:错误:类型字符串的预期资源[ResourceType] 这是因为我使用的是Butterknife的@BindString,它被生成为类似的东西 我怎么能让工作室没有检测到这是错误?我试过在设置中搜索,但没有成功。

  • 问题内容: 我得到这个错误 问题答案: 具有无效的返回类型。更改方法的返回类型以返回值

  • 我正面临一个关于GSON json到Java的问题。我在这里查了很多帖子,但我找不到我的问题的解决方案。所以我在这里列出我的问题。谢谢! 以下是我的Json数据 非常非常感谢!!

  • 我正在使用java,这似乎是一个非常简单的三元条件。 这是它抛给我的错误: 我来自C#背景,所以可能我遗漏了一些非常明显的东西。