我不确定这个过程的哪一部分失败,但是我希望对此有所帮助。不能在包含JSpack的JS库中包含Angular2中的Webpack
我有一个供应商库(BigDecimal.js),我试图导入并在我的angular2应用程序中使用。我可以通过在我的typings目录中添加一个定义文件(我也在我的源代码目录中尝试过)来获得它,但webpack不会将变量注入添加到源文件中。 (我想这只是假设它是全局声明的)。
如果有帮助,这里是定义文件迄今:
declare namespace BigDecimalLibrary {
interface MathContext {
ROUND_CEILING: number
ROUND_DOWN: number
ROUND_FLOOR: number
ROUND_HALF_DOWN: number
ROUND_HALF_EVEN: number
ROUND_HALF_UP: number
ROUND_UNNECESSARY: number
ROUND_UP: number
// TODO: Populate this if we ever need it
}
interface BigDecimal {
// CONSTANTS
ROUND_CEILING: number
ROUND_DOWN: number
ROUND_FLOOR: number
ROUND_HALF_DOWN: number
ROUND_HALF_EVEN: number
ROUND_HALF_UP: number
ROUND_UNNECESSARY: number
ROUND_UP: number
ZERO: BigDecimal
ONE: BigDecimal
TEN: BigDecimal
// INSTANCE METHODS
div(a:number, b: number): number
abs(context?: MathContext): BigDecimal
add(rhs: BigDecimal, context?: MathContext): BigDecimal
compareTo(rhs: BigDecimal, context?: MathContext): number
divide(rhs: BigDecimal, context?: MathContext): BigDecimal
divideInteger(rhs: BigDecimal, context?: MathContext): BigDecimal
max(rhs: BigDecimal, context?: MathContext): BigDecimal
min(rhs: BigDecimal, context?: MathContext): BigDecimal
multiply(rhs: BigDecimal, context?: MathContext): BigDecimal
negate(context?: MathContext): BigDecimal
plus(context?: MathContext): BigDecimal
pow(rhs: BigDecimal, context?: MathContext): BigDecimal
remainder(rhs: BigDecimal, context?: MathContext): BigDecimal
subtract(rhs: BigDecimal, context?: MathContext): BigDecimal
equals(rhs: BigDecimal, context?: MathContext): boolean
format(before: number, after: number, explaces?: number, exdigits?: number, exform?: number, exround?: number): string
intValueExact(): number
movePointLeft(digits: number): BigDecimal
movePointRight(digits: number): BigDecimal
scale(): number
setScale(scale: number, round?: number): BigDecimal
signum(): number
toString(): string
round(precision: number, mode: number): BigDecimal
isGreaterThan(rhs: BigDecimal): boolean
isLessThan(rhs: BigDecimal): boolean
isGreaterThanOrEqualTo(rhs: BigDecimal): boolean
isLessThanOrEqualTo(rhs: BigDecimal): boolean
isPositive(): boolean
isNegative(): boolean
isZero(): boolean
}
interface BigDecimalStatic {
// CONSTANTS
ROUND_CEILING: number
ROUND_DOWN: number
ROUND_FLOOR: number
ROUND_HALF_DOWN: number
ROUND_HALF_EVEN: number
ROUND_HALF_UP: number
ROUND_UNNECESSARY: number
ROUND_UP: number
ZERO: BigDecimal
ONE: BigDecimal
TEN: BigDecimal
new (number: string|string[], offset?: number, length?: number): BigDecimal
}
}
declare module 'big-decimal' {
var BigDecimal: BigDecimalLibrary.BigDecimalStatic;
export = BigDecimal;
}
declare var BigDecimal: BigDecimalLibrary.BigDecimalStatic;
在我的TS文件的顶部,我用下面的导入类:
import BigDecimal = BigDecimalLibrary.BigDecimal;
我已经尝试将目录复制到供应商目录,并且只是做了一个npm install big-decimal
。有什么我需要在webpack中配置?我甚至失去了开始的地方。
编辑
我已经能够通过使用来解决此问题如下:
import BigDecimalType = bigdecimal.BigDecimal;
const BigDecimal = require('big-decimal').BigDecimal;
,独自替换为“BigDecimalType”所有类型的引用,并留下剩余的引用。这并不理想,但现在可以工作。
您是否尝试过从'。/ bigdecimal''导入{BigDecimal} – Jacques
这是行不通的。无论我在何处放置定义文件,我都会得到“无法解析文件或目录” – sgcharlie
在您的bigdecimal文件的最底部,添加以下行:'export {BigDecimal};' – Jacques