使用Big.js时,汇总会出错

时间:2017-08-22 09:20:43

标签: javascript angular typescript rollupjs

我目前正在为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库没有(默认)导出,所以我尝试使用这样的commonjsnodeResolve Rollup插件:

  plugins: [
      nodeResolve({
          jsnext: true,
          main: true
      }),
      commonjs({})
  ]

我有一种感觉,我在监督明显的事情。如果有人能指出我在这里犯的错误,我会感激不尽。

1 个答案:

答案 0 :(得分:0)

调用导入的命名空间* as Big部分)是一种与ES模块不兼容的TypeScript习惯用法。试着这样做:

import Big from 'big.js';

你仍然需要node-resolve和commonjs插件,因为Big.js是一个CommonJS模块。