React启用懒加载后,react-router使用BrowserRoute模式,二级路由页面加载其他页面时会报错“找不到相应的chunk文件”。
如页面demo/A中懒加载demo/B,会报错“react-dom.development.js:13035 Uncaught ChunkLoadError: Loading chunk B failed.”。查看network请求发现懒加载B时的js请求路径为demo/B/js/chunkName.js,而webpack打包后的统一放在了路径dist/js下,故找不到对应的chunkName.js。
解决方法:
1.将react-router的模式改为HashRouter,由于采用#hash来实现路由,请求的chunkName.js路径永远在/js路径下。
2.修改webpack的output参数,添加publicPath属性为“/”,这样所有的资源引用都将使用绝对引用方式,在多级路由下也能正常工作。