我试图创建混合角1 +角2的WebPack 我有嵌套模块的问题导入类
//a.ts
module a.b.c {
export class A {
}
}
// B .TS
module a.b.c {
export class B extends A {
}
}
代码编译,但我发现一个未定义 我试图进口以各种方式,但似乎没有任何工作 我是什么会d错了吗?
我试图创建混合角1 +角2的WebPack 我有嵌套模块的问题导入类
//a.ts
module a.b.c {
export class A {
}
}
// B .TS
module a.b.c {
export class B extends A {
}
}
代码编译,但我发现一个未定义 我试图进口以各种方式,但似乎没有任何工作 我是什么会d错了吗?
您需要在b.ts中添加对a.ts的引用。
所以,只要编辑您b.ts如下:
/// <reference path="./a.ts" />
module a.b.c {
export class B extends A {
public second;
}
}
此外,还需要包括b.ts前a.ts在HTML文件中:
<script src="./a.js"></script>
<script src="./b.js"></script>
否则,你会得到一个错误。
这是它以前的工作方式,但现在当我们添加webpack时,我发现使用引用不是最佳做法,webpack不会编译它。
如果我只是删除模块,比没有问题。但就像你说的那样,这是一个有很多内部模块的遗留代码。 如果没有这样做的好方法,最好的做法是删除模块,而不是我们可能做的那样。
好的,所以我会再次说,webpack确实没有真正的好办法,除非这是一个巨大的项目,否则转移到外部模块是一种方法。
如果大多数的文件看起来像这样:
//a.ts
module a.b.c {
export class A {}
}
//b.ts
module d.e.f {
export class B extends a.b.c.A
}
比它的相对容易,你只是做:
//a.ts
个export module a.b.c {
export class A {}
}
//b.ts
import {a} from './a';
module d.e.f {
export class B extends a.b.c.A
}
然而,在你给的例子,你有两个文件组成同一个命名空间\内部模块 - a.b.c
。这是很难对付的,你需要做一些丑陋的东西,如:
//b.ts
import {aImported} from './a';
module a.b.c {
export class B extends aImported.b.c.A
}
在此方案中,您的文件是外部模块和他们出口的内部模块。
也有不同的方法,这是把所有的旧代码,并编译+ Concat的它使用咕嘟咕嘟\咕噜,产生的js文件传递给的WebPack以前老同学。我过去做过这件事,我后悔了,后来离开了它。但它确实需要对代码进行最少量的更改,这是它的主要优点。总体而言,我认为它比以前的解决方案更糟糕......
“我尝试以各种方式导入......”您能否显示您尝试的任何示例? – Claies
从'./a'导入{A}; –
当导入像我越来越'一个不是一个模块' –