【问题标题】:Typescript compilation error TS2307: Cannot find module with angular2 rc5 and ngModuleTypescript 编译错误 TS2307:找不到带有 angular2 rc5 和 ngModule 的模块
【发布时间】:2016-12-31 06:53:43
【问题描述】:

我正在尝试找出以下错误的原因。

app/src/app.module.ts(13,33): error TS2307: Cannot find module 'src/components/test/test.module

我正在使用 Angular2 RC5 并创建了一个功能模块并将其导入到 app.module.ts 文件中。我正在使用路由器延迟加载模块。

app.module.ts 看起来像这样

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { routing } from './app.routes';

/* App Root */
import { AppComponent }  from './app.component';

/* Feature module */
import { TestModule } from 'src/components/test/test.module';


@NgModule({
    imports:      [ BrowserModule, routing ],
    declarations: [ AppComponent ],
    bootstrap:    [ AppComponent ],
    providers: []
})

export class AppModule { }

test.module.ts 看起来像这样

import { NgModule }           from '@angular/core';
import { CommonModule }       from '@angular/common';

import { TestComponent } from './test.component';
import { routing }            from './test.routes';

@NgModule({
    imports:      [ CommonModule, routing ],
    declarations: [ TestComponent ],
    providers:    []
})

export default class TestModule { }

app.routes.ts 看起来像

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

export const routes: Routes = [
    {
        path: '',
        redirectTo: '/test',
        pathMatch: 'full'
    },
    {
        path: 'test',
        loadChildren: 'src/components/test/test.module'
    }

];

export const routing = RouterModule.forRoot(routes);

test.routes.ts 看起来像

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

import { TestComponent } from './test.component';


const routes: Routes = [
  { path: '',
      component: TestComponent }
];

export const routing = RouterModule.forChild(routes);

当我尝试使用default 关键字编译test.module.ts 文件时出现上述错误。如果我删除它,错误就会消失。但当然,在这种情况下,我将无法对功能模块使用延迟加载。

有人遇到过这个吗?

【问题讨论】:

    标签: javascript angular typescript module lazy-loading


    【解决方案1】:

    我在您的代码中看到多个错误。 您在 AppModule 中导入了错误的模块。 test.module.ts 的导出类名称是 TestModule,但您在 AppModule 中导入 DashboardModule

    代替:

    import { DashboardModule } from 'src/components/test/test.module';

    你应该导入:

    import { TestModule } from 'src/components/test/test.module';

    当然,您需要将 TestModule 添加到您的 AppModule 导入中。

    【讨论】:

    • 啊,我上面写的不好的白写代码示例。谢谢指点。我正在从 'src/components/test/test.module' 导入 import { TestModule };除此之外,对于 TestModule 的延迟加载,我们不需要在 AppModule 中添加它。不是吗?
    • 也将其添加到导入中:@NgModule({ imports: [ CommonModule, routing, TestModule ] })
    • 我正在尝试实现angular.io/docs/ts/latest/guide/ngmodule.html#!#lazy-load 我应该添加更多有问题的文件以使其清楚。
    • 更新了我在此实现中使用的路由文件的问题。在导出 TestModule 时添加“默认”关键字时出现此错误。
    • 不过,我看到的唯一错误是您在app.module.ts 中的@NgModule imports 中缺少TestModule 导入。在这里看不到任何其他可能导致问题的东西。
    猜你喜欢
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2017-03-18
    • 2016-06-12
    相关资源
    最近更新 更多