【问题标题】:How to bundle and import buffer npm package with aurelia-cli?如何使用 aurelia-cli 捆绑和导入缓冲区 npm 包?
【发布时间】:2017-01-31 17:58:31
【问题描述】:

在我的 ESNext aurelia-cli 项目中,我正在尝试使用一个名为 bs58 的 npm 模块。 bs58 使用节点缓冲区,因此我在浏览器中包含了 npm 缓冲区模块以支持缓冲区。 buffer 依赖于其他几个模块,我也包括在内。

在 aurelia.json 中,我绘制了包和依赖项:

      ...
      {
        "name": "base64-js",
        "path": "../node_modules/base64-js",
        "main": "index"
      },
      {
        "name": "ieee754",
        "path": "../node_modules/ieee754",
        "main": "index"
      },
      {
        "name": "buffer",
        "path": "../node_modules/buffer",
        "main": "index",
        "deps": [
          "base64-js",
          "ieee754"
        ]
      },
      {
        "name": "base-x",
        "path": "../node_modules/base-x",
        "main": "index"
      },
      {
        "name": "bs58",
        "path": "../node_modules/bs58",
        "main": "index",
        "deps": [
          "base-x"
        ]
      }
      ...

然后在我的代码中:

import bs58 from 'bs58';
...
bs58.decode(...);

当我调用 bs58.decode 时,我得到“未定义缓冲区”。 我尝试了几种不同的方式导入缓冲区,但没有任何原因导致它定义全局 Buffer 对象,例如

import 'buffer';
import Buffer from 'buffer';
import { Buffer} from 'buffer';
require('buffer');

在 aurelia-cli 中包含缓冲区的正确方法是什么?

【问题讨论】:

  • 在黑暗中射击...尝试将"buffer" 添加到您的部门列表中以获取bs58,因为似乎bs58 依赖于buffer。另外,您能否检查一下您的"main" 是否实际上是文件夹../node_modules/buffer 中的index.js?它并不总是索引。确保 main 指向您要导入的主要 JavaScript 文件。

标签: aurelia


【解决方案1】:

base-x 包正在寻找一个全局 Buffer,所以给它一个:

// aurelia.json
{
    "ieee754",
    "base64-js",
    "buffer",
    "base-x",
    "bs58"
}


// some js file
import { Buffer } from 'buffer';
window.Buffer = Buffer;
import bs58 from 'bs58';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2016-03-16
    • 2017-11-22
    • 1970-01-01
    相关资源
    最近更新 更多