代码之家  ›  专栏  ›  技术社区  ›  Ahsan Ahmad Raheel

将bitcore explorer与bitcore lib(bitcore)一起使用时出错

  •  2
  • Ahsan Ahmad Raheel  · 技术社区  · 8 年前

    我正在尝试使用bitcore lib生成比特币地址,并使用bitcore explorer获取未使用的交易。。 生成地址的代码如下:

    var bitcore = require('bitcore-lib');
    var rand_buffer = bitcore.crypto.Random.getRandomBuffer(32);
    var rand_number = bitcore.crypto.BN.fromBuffer(rand_buffer);
    var privateKay = new bitcore.PrivateKey(rand_number);
    var privateKeyWif = privateKay.toWIF();
    var address = privateKay.toAddress('testnet');
    console.log({
      rand_buffer:rand_buffer,
      rand_number_hex:rand_number,
      rand_number_dec:rand_number.toString(),
      privateKey:privateKay,
      privateKeyWif: privateKeyWif,
      address:address,
    });
    

    这很好。。。输出为:

    { rand_buffer: <Buffer 55 8b 27 c4 51 87 97 17 9a 7d 1d 72 48 26 e5 83 95 74 5b 3b b1 b4 b5 b6 a7 1c df 9f 18 e6 97 2e>,
      rand_number_hex: <BN: 558b27c4518797179a7d1d724826e58395745b3bb1b4b5b6a71cdf9f18e6972e>,
      rand_number_dec: '38692458332424984226826540178179935156087120588336482991409403810055901845294',
      privateKey: <PrivateKey: 558b27c4518797179a7d1d724826e58395745b3bb1b4b5b6a71cdf9f18e6972e, network: livenet>,
      privateKeyWif: 'Kz5zkBwfiYNkyswsKjot4wWmxHWUZdVMmxf65Z5wLk29ufhxnnQT',
      address: <Address: msTDjA4PmyePSWx2VcaQWoWoQ7gWzU2Kqx, type: pubkeyhash, network: testnet> }
    

    在对生成的地址进行任何交易后, 我需要使用bitcore探索器 所以我需要bitcore探索者 代码如下:

    var Insight = require('bitcore-explorers').Insight;
    var insight = new Insight('testnet');
    insight.getUnspentUtxos(address1,(error,utxos)=>{
      if(error) return console.log(error);
      console.log(utxos)
    });
    

    问题是,当我需要bitcore Explorer时,它会给我以下错误:

    D:\RAHEEL\Projects\gateway\node_modules\bitcore-explorers\node_modules\bitcore-lib\index.js:12
        throw new Error(message);
        ^
    
    Error: More than one instance of bitcore-lib found. Please make sure to require bitcore-lib and check that submodules do not
    also include their own bitcore-lib dependency.
        at Object.bitcore.versionGuard (D:\RAHEEL\Projects\gateway\node_modules\bitcore-explorers\node_modules\bitcore-lib\index.
    js:12:11)
        at Object.<anonymous> (D:\RAHEEL\Projects\gateway\node_modules\bitcore-explorers\node_modules\bitcore-lib\index.js:15:9)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)
        at Function.Module._load (module.js:438:3)
        at Module.require (module.js:497:17)
        at require (internal/module.js:20:19)
        at Object.<anonymous> (D:\RAHEEL\Projects\gateway\node_modules\bitcore-explorers\lib\models\addressinfo.js:3:15)
    
    4 回复  |  直到 8 年前
        1
  •  3
  •   ogw_yuya    8 年前

    这里有一个临时解决方案。

    ~/bitcore explorers/node\u modules/bitcore lib/index。js公司

    第7行:

    bitcore.versionGuard = function(version) {
    

    将其更改为:

    bitcore.versionGuard = function(version) { return;
    

    但是,对于目前尚未修复的主分支,应该修复此问题。你可以查一下 here

        2
  •  2
  •   halfer Jatin Pandey    6 年前

    是的,在这个时候,这似乎仍在进行中(并且有争议)。 它已在中多次提出 Github

    我遇到了相同的问题,尽管要求略有不同:我正在使用 bitocore-p2p npm包;当前版本为1.1.2,需要 bitcore-lib 版本0.14.0作为依赖项。

    我宁愿不修补 bitcore-p2p/node_modules/bitcore-lib/index.js (根据此处和中的另一个答案) github bitcore问题 ). 相反,在我的项目中 package.json 我保持单身 bitocore-p2p 然后引用其(唯一)v0.14.0 比特核心库 附属国:

    var p2p     = require('bitcore-p2p');                           //p2p exports
    var p2pMod  = require.cache[require.resolve('bitcore-p2p')];    //p2p module
    var bitcore = p2pMod.require('bitcore-lib');                    //p2p/bitcore-lib exports
    

    或者可以使用更脆弱的方法:

    var p2p     = require('bitcore-p2p');                           //p2p exports    
    var bitcore = require('bitcore-p2p/node_modules/bitcore-lib');  //p2p/bitcore-lib exports
    

    就我而言,这没有问题。但很明显,如果我需要0.16.0版本 比特核心库 我通常希望这成为我的项目的直接依赖,然后遇到麻烦。

        3
  •  0
  •   Muhammad Waqar    4 年前

    尝试添加

    "postinstall": "find ./node_modules/**/node_modules -type d -name 'bitcore-lib' -exec rm -r {} + && echo 'Deleted duplicate bitcore-libs'"
    

    在您的软件包中。json文件。这对我很有效。

        4
  •  -1
  •   nicolsondsouza    7 年前

    我通过使用解决了这个问题

    var bitcore = require('bitcore-explorers/node_modules/bitcore-lib');

    因此,它现在不会产生任何错误。

    推荐文章