试图让 react-router (v4.0.0) 和 react-hot-loader (3.0.0-beta.6) 玩得很好,但在浏览器控制台中出现以下错误:
Warning: React.createElement: type is invalid -- expected a string
(for built-in components) or a class/function (for composite
components) but got: undefined. You likely forgot to export your
component from the file it's defined in.
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() );
路线.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;
原文由 JoeTidee 发布,翻译遵循 CC BY-SA 4.0 许可协议
大多数情况下,这是由于不正确的导出/导入。
常见错误:
可能的选项:
有几种方法可能是错误的,但该错误是因为每次都有 60% 的时间导入/导出不匹配。
编辑
通常,您 应该 获得一个堆栈跟踪,指示故障发生的大致位置。这通常紧随您在原始问题中的消息之后。
如果未显示,则可能值得调查原因(可能是您缺少的构建设置)。无论如何,如果它没有显示, 唯一 的做法是缩小导出/导入失败的范围。
可悲的是,在没有堆栈跟踪的情况下,唯一的方法是手动删除每个模块/子模块,直到不再出现错误,然后按照自己的方式备份堆栈。
编辑 2
通过评论,确实是导入问题,具体是导入了一个不存在的模块