我有一个较旧的Angular 2 RC4项目我已更新到最新版本(现在是2.0.0)。使用角度CLI的最新版本(1.0.0-beta.14)运行ng build
时,我没有遇到任何编译错误,但是当运行ng serve
时,我在标题中收到错误。
有问题的基本服务如下:
import { Injectable } from '@angular/core';
import { Response } from "@angular/http";
import { Observable } from "rxjs/Observable";
export class PkServiceBaseService {
// Implementation
}
扩展基本服务的类看起来像:
import { Injectable } from '@angular/core';
import { Http, Response, Headers } from '@angular/http';
import { Observable } from "rxjs/Observable";
import { PkServiceBaseService } from "./";
import { JwtAuthorizationService } from "./";
import { Task } from "../shared";
@Injectable()
export class TaskService extends PkServiceBaseService {
// Implementation
}
两个文件都在同一目录中,并通过index.ts
文件导出。
奇怪的是,在使用继承时,我在某些模型类中遇到了同样的错误,但现在已经消失了。
此外,错误的堆栈跟踪包含对另一个服务UserService
的引用,该服务也扩展了PkServiceBaseService
,但在TaskService
内完全没有使用。
如果我能提供更多信息,请告诉我。我省略了实现细节,因为问题似乎只与继承有关,但我当然可以提供更多信息。
完整堆栈跟踪以供参考:
__extends @ task.service.ts:40
(anonymous function) @ user.service.ts:11
(anonymous function) @ user.service.ts:105
__webpack_require__ @ bootstrap 32723c5…:52
(anonymous function) @ main.bundle.js:4803
__webpack_require__ @ bootstrap 32723c5…:52
(anonymous function) @ prep-kids.component.ts:18
__webpack_require__ @ bootstrap 32723c5…:52
(anonymous function) @ icon-registry.js:375
__webpack_require__ @ bootstrap 32723c5…:52
(anonymous function) @ src async:7
__webpack_require__ @ bootstrap 32723c5…:52
(anonymous function) @ main.bundle.js:81928
__webpack_require__ @ bootstrap 32723c5…:52
webpackJsonpCallback @ bootstrap 32723c5…:23
(anonymous function) @ main.bundle.js:1
修改 我应该补充一点,我已经跟踪了the RC4 to RC5 migration steps的Angular 2,以及Angular CLI的Upgrading from Beta.10 to Beta.14步骤
答案 0 :(得分:2)
对我来说也是如此。最后,我的代码中存在一些循环依赖,系统没有抱怨,webpack会抛出误导性的消息。
在我的情况下,我有一个共享模块和一个核心模块。我没有导入共享,而是将其分解为共享/菜单,共享/图标等。
这打破了所有奇怪的依赖关系并开始工作得很好
答案 1 :(得分:2)
经过多次挖掘和捏造,我终于能够让我的应用程序再次运行。
Angular CLI队列中的 This issue让我走上正轨。有时在index.ts
文件中使用通配符似乎会导致在编译后发现该类的问题。
例如,在我做某事之前:
export * from "./user.service";
export * from "./pk-base-service.service";
但是将index.ts
中的内容更改为:
export {UserService} from "./user.service";
export {PkBaseService} from "./pk-base-service.service";
摆脱了我的问题。
还有一些实例我会从模型类中得到同样的错误。以前,当我不得不在相同的文件夹中建模时,我能够做到:
import { User } from "./";
将导入更改为:
import { User } from "./user.model";
摆脱了错误。
答案 2 :(得分:0)
对我而言,index.ts中的顺序很重要。 把我的基类放在第一位,然后错误就消失了。
答案 3 :(得分:0)
我刚删除了 -
export * from 'path/base-class-name';
来自index.ts
并将其导入我的基础模块。
import { BaseClass } from 'path/base-class-name';
这解决了我的问题。