为了账号安全,请及时绑定邮箱和手机立即绑定

webpack+react打包出错

webpack+react打包出错

喵喵时光机 2018-09-04 17:19:05
这是入口文件(main.js)entry: './app/main.js',output: {    path: __dirname + '/build',    filename: 'bundle.js'},这是main里面的内容:var React = require('react');var ReactDOM = require('react-dom');var ProductCss = require('./css/product.css');require('./css/product.css');var AppComponent = require('./components/login.js');var RankList=require('./components/ranking.js');ReactDOM.render(<RankList />,document.getElementById('rank-list'));ReactDOM.render(<AppComponent />, document.getElementById('login-container'));这两个组件是不同的两个html页面(login.html,ranking.html);现在问题是页面上会报下面这个错:Uncaught Invariant Violation: _registerComponent(...): Target container is not a DOM element.我注释掉一个,就会运行正常,两个不同页面的组件不能放到一个入口文件里面吗还请大神指教这是什么错误,该怎么解决呢:
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

你的rank-listlogin-container分别在不同的页面,所以总会出现 document.getElementById(xxx) 为 undefined 的情况,往 undefined 里渲染肯定会出错了。

你在每一个 render 前加一个判空就行。
如:

if (document.getElementById('rank-list')) {
    ReactDOM.render(<RankList />,document.getElementById('rank-list'));
}


查看完整回答
反对 回复 2018-10-28
  • 1 回答
  • 0 关注
  • 686 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号