我目前正在为Angular 4.x开发一个库(用TypeScript编写)。使用Rollup创建必要的JavaScript包。一切正常,直到我添加了big.js library和相应的类型(@types/big.js
)。
我这样导入它:
import * as Big from 'big.js';
import BigJS = BigJsLibrary.BigJS;
并像这样使用它:
// instantiating
let bigValue = Big(value);
// example of parameter usage
private someFunction(value: BigJS) { /* some code */ }
运行Rollup时,我现在收到以下错误:Error: Cannot call a namespace ('Big')
。我的第一个想法是将big.js
添加到Rollup(external: [ 'big.js' ]
)的外部列表中。然而,这并没有解决问题。
我可以看到BigJS库没有(默认)导出,所以我尝试使用这样的commonjs和nodeResolve Rollup插件:
plugins: [
nodeResolve({
jsnext: true,
main: true
}),
commonjs({})
]
我有一种感觉,我在监督明显的事情。如果有人能指出我在这里犯的错误,我会感激不尽。
答案 0 :(得分:0)
调用导入的命名空间(* as Big
部分)是一种与ES模块不兼容的TypeScript习惯用法。试着这样做:
import Big from 'big.js';
你仍然需要node-resolve和commonjs插件,因为Big.js是一个CommonJS模块。