从模块导入的Webpack类不是构造函数

时间:2017-01-16 11:48:09

标签: angular typescript ionic2

我有一个angular2包库(称之为A),我使用npm install从另一个不同的angular2项目(称为B)导入。 来自A的所有服务,组件似乎都适用于B项目,它们都是进口良好的注入和使用 但是,只有简单的类定义才能起作用。即我有一个类定义如下



export class JustAClass{
    public Title:string;
    constructor(title:string){
        this.Title = title;
    }

    getTitleLong():string{
        return 'Long '+this.Title;
    }
}




并在index.d.ts中导出它。

  

从' ./ components / test / just'中导出{JustAClass};

在项目B,我可以看到just.d.ts文件如下:



export declare class JustAClass {
    Title: string;
    constructor(title: string);
    getTitleLong(): any;
}




我使用webswtorm,当我在项目B的文件中使用这个类时,它给了我intellisence,并且知道指向我文件定义:



import { JustAClass } from 'my-project-lib-A';

@Component({
    templateUrl: 'orders.html'
})
export class SomePage {
    

    constructor() {

        var d = new JustAClass('aaaa'); // this is undefiend in run time
        console.log(d.getTitleLong());

    }




我得到它' JustAClass' undefined,webpack抛出错误:

  

WEBPACK_IMPORTED_MODULE_2_my-project-lib-A .JustAClass不是构造函数

如果重要的话,我使用ionic2作为项目B.

1 个答案:

答案 0 :(得分:0)

如果有人偶然发现这一点,对我有用的可能解决方案之一是消除导入的类和导入者之间的循环依赖。似乎webpack通过用未定义的或类似的构造替换导入的类来解决循环依赖关系,然后导致运行时异常。