【问题标题】:Angular 6 with plain TypeScript - ERROR: module has no exported member带有普通 TypeScript 的 Angular 6 - 错误:模块没有导出的成员
【发布时间】:2018-11-11 20:23:20
【问题描述】:

我有一个小型 Angular 6 库,我正在其中构建一个可重用的组件来显示页面级消息,例如错误、信息、警告和成功。

为此我有一个枚举ServerMessageType.ts,这很简单:

export enum ServerMessageType {
    Error = 'error',
    Info = 'info',
    Success = 'success',
    Warning = 'warning'
}

ServerMessage.ts 应该使用ServerMessageType

import { ServerMessageType } from './ServerMessageType';

export class ServerMessage {
    constructor(public type: ServerMessageType, 
                public messageText: string, 
                public dismissible?: boolean, 
                public id?: string) {
    }
}

server-messages.component.ts

import { Component, EventEmitter, Input, Output } from '@angular/core';

import { ServerMessage } from './ServerMessage';
import { ServerMessageType } from './ServerMessageType';

    @Component({
  selector: 'app-server-messages',
  templateUrl: './server-messages.component.html',
  styleUrls: []
})
export class ServerMessagesComponent {

  @Input() messages: ServerMessage[];
  @Output() messageRemoved = new EventEmitter<ServerMessage>();

  constructor() {
  }

  clearMessage = function (index: number) {
    const message = this.messages[ index ];

    this.messageRemoved.emit(message);
    this.messages.splice(index, 1);
  };

  getMessageClass(message: ServerMessage): string {
    switch (message.type) {
      case ServerMessageType.Error:
        return 'alert-danger';
      case ServerMessageType.Info:
        return 'alert-info';
      case ServerMessageType.Success:
        return 'alert-success';
      case ServerMessageType.Warning:
        return 'alert-warning';
    }
  }

  isDismissible(message: ServerMessage): boolean {
    return message.dismissible === true;
  }
}

但是,当我运行 ng build 时,我得到一个错误:

BUILD ERROR  
> projects/framework/src/lib/server-messages/server-messages.component.ts(3,28):
> error TS2305: Module
> '"/Users/xxx/dev/apps/framework/projects/framework/src/lib/server-messages/ServerMessage"'
> has no exported member 'ServerMessageType'

我做错了什么?如果我将ServerMessage 中的type 更改为字符串并完全删除ServerMessageType 枚举,则构建和部署一切都很好。

谢谢!

【问题讨论】:

  • 请查看server-messages.component.ts。你有错误的导入语句。
  • 你没有分享你的messages.component.ts... 你分享了'ServerMessageComponent.ts' ....这是你在stackoverflow上的错误吗?
  • 不。它不是重复的。它与 Angular 组件或模块无关。她只是在使用枚举 - 语言功能。
  • 这真是令人困惑。你能告诉我projects/framework/src/lib/server-messages/@IsabellePlante 中的所有文件名吗

标签: angular typescript enums


【解决方案1】:

你需要在你的根模块中导入你的组件,并且当你制作服务而不是让它@Injectable而不是使用。

【讨论】:

    【解决方案2】:

    如果您想通过导入该模块来导入该组件,则需要从该模块中显式导出该组件。

    您必须解决此问题的代码是您要从中导出该组件的模块代码。

    【讨论】:

    【解决方案3】:

    愚蠢的错误!

    server-messages.component.ts中,这两行:

    import { ServerMessage } from './ServerMessage';
    import { ServerMessageType } from './ServerMessageType';
    

    已恢复为

    import { ServerMessage, ServerMessageType } from './ServerMessage';
    

    感谢您的帮助!它在 ServerMessage.ts 中找不到 ServerMessageType,因为它是在 ServerMessageType.ts...

    中导出的

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 2021-11-07
      • 2021-09-09
      • 2020-11-13
      • 2019-04-13
      • 2021-03-25
      • 2019-06-04
      • 2017-03-29
      • 2018-10-19
      • 2018-10-16
      相关资源
      最近更新 更多