You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 5懒加载报错:RouterModule.forRoot()被调用两次求助

解决Angular 5懒加载中RouterModule.forRoot() called twice的错误

嘿,我来帮你搞定这个问题!错误提示已经说得很明确——整个应用里RouterModule.forRoot()被调用了两次,但你只应该在根路由模块(也就是你的AppRoutingModule)里调用一次,懒加载模块的路由必须用forChild()。

从你贴的代码来看,AppRoutingModule和AdminRoutingModule的写法都是正确的,那问题大概率出在你懒加载的AdminProfileModule本身上,我帮你梳理几个排查和修复的关键点:

核心排查方向

你需要检查AdminProfileModule的代码,因为它是被懒加载的模块,很可能犯了以下两个错误之一:

1. 不小心导入了AppRoutingModule

如果AdminProfileModule的imports数组里包含了AppRoutingModule,那相当于把根路由模块的代码又执行了一遍,自然会触发forRoot()被重复调用的错误。

修复方式:确保AdminProfileModule的imports里只有CommonModule和你自己写的AdminRoutingModule,绝对不能导入AppRoutingModule。正确的AdminProfileModule结构应该是这样的:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
// 只导入子路由模块,不要碰根路由模块
import { AdminRoutingModule } from './admin-routing.module';
import { OrdersTabComponent } from '../../components/tabs/orders-tab/orders-tab.component';

@NgModule({
  declarations: [OrdersTabComponent],
  imports: [
    CommonModule,
    AdminRoutingModule // 这里用的是forChild的路由模块,完全没问题
  ]
})
export class AdminProfileModule { }

2. 在AdminProfileModule里直接调用了RouterModule.forRoot()

如果你的AdminProfileModule没有用AdminRoutingModule,而是自己直接在imports里写了RouterModule.forRoot(...),那也会导致重复调用的错误。

修复方式:把懒加载模块的路由配置单独抽到AdminRoutingModule里(就像你已经做的那样),然后在AdminProfileModule里只导入这个子路由模块即可。

额外注意点

  • 整个应用里只能有一个地方调用RouterModule.forRoot(),就是根路由模块AppRoutingModule,所有其他路由模块(包括懒加载模块的路由)都必须用RouterModule.forChild()。
  • 如果你还有其他懒加载模块,也要用同样的逻辑检查它们的模块结构,避免犯同样的错误。

内容的提问来源于stack exchange,提问作者Egor Zvuzdetskyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:28:26