使用 Big.js 时 Rollup 出错

Rollup gives error when using Big.js

我目前正在为 Angular 4.x 开发一个库(用 TypeScript 编写)。使用 Rollup. It all worked fine until I added the big.js library 和相应的类型 (@types/big.js) 创建必要的 JavaScript 包。

我是这样导入的:

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 and nodeResolve Rollup 插件,如下所示:

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

我有一种感觉,我正在监督一些显而易见的事情。如果有人能指出我在这里犯的错误,我将不胜感激。

调用导入的 namespace* as Big 部分)是与 ES 模块不兼容的 TypeScript 习惯用法。尝试这样做:

import Big from 'big.js';

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