簡體   English   中英

將 bitcore-explorer 與 bitcore-lib (Bitcore) 一起使用時出錯

[英]Error when using bitcore-explorer with bitcore-lib (Bitcore)

我正在嘗試使用 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,
});

哪個工作正常...... output 是:

{ 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-explorers,所以我需要 bitcore-explorers 代碼如下:

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-explorers 時,它會給我以下錯誤:

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)

這里有一個臨時解決方案。

~/bitcore-explorers/node_modules/bitcore-lib/index.js

第 7 行:

bitcore.versionGuard = function(version) {

將其更改為:

bitcore.versionGuard = function(version) { return;

然而,這個問題應該針對當前尚未修復的主分支修復。 你可以在這里查看

是的,此時,這似乎仍在進行中(並且有爭議)。 它已在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 bitcore-lib依賴項:

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

就我而言,這沒有問題。 但很明顯,如果我要求說bitcore-lib版的 bitcore bitcore-lib我通常想讓它成為我項目的直接依賴項,然后遇到麻煩。

我通過使用解決了這個問題

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

所以,它現在不會產生任何錯誤。

嘗試添加

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

在腳本中你的 package.json 文件。 它對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM