Angular 6懒加载失效:访问dashboard路由提示找不到模块
解决Angular 6.0.0懒加载路由"Cannot find module"报错问题
嘿,我刚处理过一模一样的问题!这个报错的核心原因是Angular 6.0.0对懒加载路由的语法做了强制更新,你之前用的那种字符串路径写法(loadChildren: 'app/login/login.module#LoginModule')在Angular 6里已经不被默认支持了,给你两个可行的解决方案:
方案一:用Angular官方推荐的新语法(首选)
这是符合ES标准的动态import写法,不仅适配Angular 6+的版本,还能优化打包体积。直接把你的路由配置改成这样:
const routes: Routes = [ { path: 'login', // 用相对路径指向模块,从当前路由文件的位置出发 loadChildren: () => import('./login/login.module').then(m => m.LoginModule) }, { path: '', component: MasterComponent, children: [ { path: 'dashboard', loadChildren: () => import('./dashboard/dashboard.module').then(m => m.DashboardModule) } ] } ];
这里要注意必须用相对路径,你之前写的app/xxx这种绝对路径在新语法下会导致模块找不到,这也是常见的踩坑点。
方案二:兼容旧写法(不推荐,仅临时过渡用)
如果你暂时不想改代码,可以调整配置来让旧写法生效,但不建议长期使用:
- 打开项目根目录的
tsconfig.json,在compilerOptions里添加"module": "esnext",同时确保"moduleResolution": "node" - 打开
angular.json,找到build配置项,把aot设为false
不过要注意,关闭AOT会影响生产环境的性能和打包体积,所以还是尽量用方案一。
最后再检查两个细节:
- 确认
DashboardModule确实在app/dashboard/dashboard.module.ts里,而且类名拼写完全正确(大小写不能错!) - 确认
DashboardModule里已经正确配置了RouterModule.forChild(),添加了对应的子路由
内容的提问来源于stack exchange,提问作者Chanuka Asanka
相关产品推荐
相关产品推荐

