首页 文章

Angular 2 RC4到最新版 - “Uncaught TypeError:无法读取未定义的属性'prototype'”

提问于
浏览
4

我有一个较旧的Angular 2 RC4项目,当使用角度CLI的最新版本(1.0.0-beta.14)运行 ng build 时,我得到任何编译错误,但是当运行 ng serve 时,我在 Headers 中收到错误 .

有问题的基本服务如下:

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

Edit: 我应该补充一点,我跟着Angular 2的the RC4 to RC5 migration steps,以及Angular CLI的Upgrading from Beta.10 to Beta.14步骤

4 回答

  • 2

    它发生在我身上 . 最后,我的代码中存在一些循环依赖,系统没有抱怨,webpack会引发误导性消息 .

    在我的例子中,我有一个共享模块和一个核心模块 . 而不是导入共享我打破了共享/菜单,共享/图标等 .

    这破坏了所有奇怪的依赖,并开始工作得很好

  • 0

    经过多次挖掘和捏造,我终于能够让我的应用程序再次运行 .

    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";
    

    摆脱了错误 .

  • 0

    对我而言,index.ts中的顺序很重要 . 首先放入我的基类,然后错误就消失了 .

  • 2

    我刚刚删除了 -

    export * from 'path/base-class-name';
    

    index.ts 并将其导入我的基本模块 .

    import { BaseClass } from 'path/base-class-name';
    

    这解决了我的问题 .

相关问题