Ошибка при использовании bitcore-explorer с 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,
});
Который работает нормально... вывод:
{ 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-explors, это дает мне следующую ошибку:
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 ответа
Здесь есть временное решение.
~ / bitcore-Explorers/node_modules/bitcore Пб /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). Вместо этого в моем проекте 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
В моем случае это не проблематично. но ясно, если бы мне потребовалось, скажем, версия 0.16.0 bitcore-lib
Обычно я хотел бы сделать это прямой зависимостью от моего проекта, а затем столкнуться с проблемами.
Попробуйте добавить
"postinstall": "find ./node_modules/**/node_modules -type d -name 'bitcore-lib' -exec rm -r {} + && echo 'Deleted duplicate bitcore-libs'"
в сценариях ваш файл package.json. Это сработало для меня.
Я исправил эту проблему, используя
var bitcore = require('bitcore-explorers/node_modules/bitcore-lib');
Так что теперь никаких ошибок не возникает.