带有普通 TypeScript 的 Angular 6 - 错误:模块没有导出的成员
Posted
技术标签:
【中文标题】带有普通 TypeScript 的 Angular 6 - 错误:模块没有导出的成员【英文标题】:Angular 6 with plain TypeScript - ERROR: module has no exported member 【发布时间】: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' ....这是你在***上的错误吗?
Angular 2 : export component on a module and import and use it inside a module的可能重复
不。它不是重复的。它与 Angular 组件或模块无关。她只是在使用枚举 - 语言功能。
这真是令人困惑。你能告诉我projects/framework/src/lib/server-messages/
@IsabellePlante 中的所有文件名吗
【参考方案1】:
你需要在你的根模块中导入你的组件,并且当你制作服务而不是让它@Injectable而不是使用。
【讨论】:
【参考方案2】:如果您想通过导入该模块来导入该组件,则需要从该模块中显式导出该组件。
您必须解决此问题的代码是您要从中导出该组件的模块代码。
【讨论】:
谢谢!你能用例子更好地解释一下吗?我不认为我跟随。 这里解释:***.com/questions/41960959/…【参考方案3】:愚蠢的错误!
在server-messages.component.ts中,这两行:
import ServerMessage from './ServerMessage';
import ServerMessageType from './ServerMessageType';
已恢复为
import ServerMessage, ServerMessageType from './ServerMessage';
感谢您的帮助!它在 ServerMessage.ts 中找不到 ServerMessageType
,因为它是在 ServerMessageType.ts...
感谢大家的帮助!
【讨论】:
以上是关于带有普通 TypeScript 的 Angular 6 - 错误:模块没有导出的成员的主要内容,如果未能解决你的问题,请参考以下文章
带有 TypeScript 的 Angular 4:通过引用传递参数
带有 Ionic 2 Angular 2 和 TypeScript 的 OpenPGP
导入的类不能在带有 TypeScript 的 Angular.js 中用作服务
Typescript 编译器错误预期带有 Angular 1.5 组件的分号
如何在 TypeScript Angular 2 中将 Json 对象数组映射到另一个普通 json 对象
带有 TypeScript 错误的 Angular HTTP GET http.get(...).map 不是 [null] 中的函数