Angular 使用路由器延迟加载角度模块:错误找不到模块

Angular 使用路由器延迟加载角度模块:错误找不到模块,angular,angular-router,angular-module,Angular,Angular Router,Angular Module,嘿,所以我遇到了一个非常奇怪的问题,我以前在设置角度路由时没有遇到过这个问题,当我尝试延迟加载另一个模块时,我不断遇到这个错误错误:找不到模块“app/feed/feed.module” 从这里开始是我的设置 @角度/cli:6.0.1 @角度/核心:6.0.0 @角度/材质:6.0.1 净现值:6.0.1 节点:10.1.0 还要注意的是,在更新了所有全局npm包之后,我刚刚生成了一个新的angular项目,所以在运行ng new app name 这是我的应用程序路由。模块: impor

嘿,所以我遇到了一个非常奇怪的问题,我以前在设置角度路由时没有遇到过这个问题,当我尝试延迟加载另一个模块时,我不断遇到这个错误
错误:找不到模块“app/feed/feed.module”

从这里开始是我的设置

  • @角度/cli:6.0.1
  • @角度/核心:6.0.0
  • @角度/材质:6.0.1
  • 净现值:6.0.1
  • 节点:10.1.0
还要注意的是,在更新了所有全局npm包之后,我刚刚生成了一个新的angular项目,所以在运行
ng new app name

这是我的
应用程序路由。模块

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const rootRoutes: Routes = [
  { path: '', redirectTo: 'feed', pathMatch: 'full' },
  { path: 'feed', loadChildren: 'app/feed/feed.module#FeedModule' }
];

@NgModule({
  imports: [RouterModule.forRoot(rootRoutes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { FeedComponent } from './feed.component';
import { CreatePostComponent } from './create-post/create-post.component';

export const feedRoutes: Routes = [
  {
    path: '',
    component: FeedComponent,
    children: [
      { path: 'create', component: CreatePostComponent }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(feedRoutes)],
  exports: [RouterModule]
})
export class FeedRoutingModule { }
@NgModule({
  imports: [
    CommonModule,
    FeedRoutingModule
  ],
  declarations: [
    FeedComponent,
    CreatePostComponent
  ]
})
然后在我的
app.module
中导入上面的模块:

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
这是馈送路由模块

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const rootRoutes: Routes = [
  { path: '', redirectTo: 'feed', pathMatch: 'full' },
  { path: 'feed', loadChildren: 'app/feed/feed.module#FeedModule' }
];

@NgModule({
  imports: [RouterModule.forRoot(rootRoutes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { FeedComponent } from './feed.component';
import { CreatePostComponent } from './create-post/create-post.component';

export const feedRoutes: Routes = [
  {
    path: '',
    component: FeedComponent,
    children: [
      { path: 'create', component: CreatePostComponent }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(feedRoutes)],
  exports: [RouterModule]
})
export class FeedRoutingModule { }
@NgModule({
  imports: [
    CommonModule,
    FeedRoutingModule
  ],
  declarations: [
    FeedComponent,
    CreatePostComponent
  ]
})
正如在
app.module
中一样,我正在
feed.module
中导入该模块:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

const rootRoutes: Routes = [
  { path: '', redirectTo: 'feed', pathMatch: 'full' },
  { path: 'feed', loadChildren: 'app/feed/feed.module#FeedModule' }
];

@NgModule({
  imports: [RouterModule.forRoot(rootRoutes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { FeedComponent } from './feed.component';
import { CreatePostComponent } from './create-post/create-post.component';

export const feedRoutes: Routes = [
  {
    path: '',
    component: FeedComponent,
    children: [
      { path: 'create', component: CreatePostComponent }
    ]
  }
];

@NgModule({
  imports: [RouterModule.forChild(feedRoutes)],
  exports: [RouterModule]
})
export class FeedRoutingModule { }
@NgModule({
  imports: [
    CommonModule,
    FeedRoutingModule
  ],
  declarations: [
    FeedComponent,
    CreatePostComponent
  ]
})
以下是我的浏览器在VSCode中的一个小图像,用于验证模块是否位于正确的位置:


我一次又一次地使用这种方法,从来没有看到过我的第二个模块找不到的错误,我想知道它是否与更新的Angular 6软件包有关。任何和所有的帮助是非常感谢,因为我想在这个项目中惰性加载各种模块。提前谢谢

对于这些问题,您无法从上面的评论中获得答案,请使用@penleychan指定的以下语法

根据这篇文章,你最终会写这样的东西

const rootRoutes: Routes = [
  { path: '', redirectTo: 'feed', pathMatch: 'full' },
  { path: 'feed', loadChildren: 'app/feed/feed.module#FeedModule' }
];
将此更改为

const rootRoutes: Routes = [
  { path: '', redirectTo: 'feed', pathMatch: 'full' },
  { path: 'feed', loadChildren: './feed/feed.module#FeedModule' }
];

请注意这两个代码示例中的loadChildren属性的更改。如果尚未使用ng cli创建应用程序,请确保loadChildren路径与app routing.module.ts文件相对。对于我来说,建议的具有相对路径的解决方案不起作用

如果其他人对此有问题,请尝试我的解决方案,在这里使用绝对路径并在angular.json配置文件中的lazyModules下添加惰性模块:


另一种用于角度9的方法:


不确定这是否重要,我通常在没有应用程序和应用程序的情况下使用
/
。尝试
/feed/feed.module#FeedModule
,在尝试了一段时间的不同操作之后,现在就可以了。当文档为前缀指定
app
时,这只是一种误导。不过,感谢您的评论,很高兴越过这一关,进入发展阶段!在我的应用程序的Angular 5版本中,“app/foo/baa”符号确实起作用。在Angular 6中,我不得不使用@penleychan推荐的“/foo/baa”符号来进行完全相同的设置。请你回答一下,不要在评论中回答。