2017-01-30 78 views
0

在我的ESNext aurelia-cli項目中,我試圖使用名爲bs58的npm模塊。 bs58使用Node緩衝區,所以我在瀏覽器中包含了npm緩衝區模塊以支持Buffer。緩衝區取決於其他模塊,我也包括在內。如何使用aurelia-cli打包並導入緩衝區npm包?

在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緩衝區的正確方法?

+0

瞎猜...嘗試加入'「緩衝」'你的'bs58 DEPS列表'因爲'bs58'似乎取決於'buffer'。另外,你能否檢查你的''main''是否在'../ node_modules/buffer'文件夾中實際上是'index.js'?這並不總是索引。確保'main'指向您要導入的主JavaScript文件。 – LStarky

回答

1

的BASE-X包正在尋找一個全球緩衝所以給它一個:

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


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