在构建我的 Angular 5 应用程序的生产版本ng build --prod
并在本地对其进行测试后,我遇到了以下问题,请参见下图。
有东西在打电话,/es
这肯定不是我自己写的。
我认为这与缩小/aot 编译器有关。通过点击运行以下代码的路由触发调用
export function resolveFn(){
return Contact.$get().then( () => MailFolder.$get());
}
在这里,Contact.$get()
转换为对/contacts
. 这是由一个自定义库完成的,该库根据应用程序中使用的某些资源的类名构造路由名称。下面显示了执行此操作的代码段
class RelationConfiguration<T extends Resource, U extends Resource> {
private path: string;
constructor(public HostResource: IResourceConstructor<T>, public RelatedSource: IResourceConstructor<U>, public relationIdentifierKey) {
this.path = `${toPluralDash(this.HostResource.name)}/$hostId/${toPluralDash(this.RelatedSource.name)}/$relatedId`;
}
getPath(hostInstance: T, relatedInstance: U = null, noId?: boolean) {
const related = relatedInstance.id && !noId ? '/' + relatedInstance.id : '';
return this.path.replace('$hostId', hostInstance.id.toString()).replace('/$relatedId', related);
}
}
当console.log
ing 的值时this.path
,我所有的资源类都被命名为es
. 所以 AOT 编译正在破坏我的代码......如何解决这个问题(除了避免使用constructor.name
)?请注意,这只发生在-prod
标志上。“正常”构建不会破坏它。