Невозможно подключить Ganache к серверу Truffle / Npm Dev

Умею работать с Truffle и Ganache-cli. Развернули контракт и можете поиграть с ним с помощью консоли трюфеля.

truffle(development)> 
Voting.deployed().then(function(contractInstance) 
{contractInstance.voteForCandidate('Rama').then(function(v) 
{console.log(v)})})
undefined
truffle(development)> { tx: 
'0xe4f8d00f7732c09df9e832bba0be9f37c3e2f594d3fbb8aba93fcb7faa0f441d',
  receipt: 
   { transactionHash: 
'0xe4f8d00f7732c09df9e832bba0be9f37c3e2f594d3fbb8aba93fcb7faa0f441d',
     transactionIndex: 0,
     blockHash: 
'0x639482c03dba071973c162668903ab98fb6ba4dbd8878e15ec7539b83f0e888f',
     blockNumber: 10,
     gasUsed: 28387,
     cumulativeGasUsed: 28387,
     contractAddress: null,
     logs: [],
     status: '0x01',
     logsBloom: ... }

Теперь, когда я запустил сервер с помощью «npm run dev». Сервер запустился нормально, но не подключается к блокчейну

я получаю сообщение об ошибке

Uncaught (in promise) Error: Contract has not been deployed to detected network (network/artifact mismatch)

Это мой truffle.js

// Allows us to use ES6 in our migrations and tests.
require('babel-register')

module.exports = {
 networks: {
    development: {
      host: '127.0.0.1',
      port: 8545,
      network_id: '*', // Match any network id
      gas: 1470000

    }
  }
}

Подскажите, пожалуйста, как я могу подключиться?


person user986508    schedule 20.03.2018    source источник
comment
Вам следует попробовать спросить об этом на сайте обмена стеками Ethereum.   -  person Fred Douglis    schedule 20.03.2018
comment
Я тоже спрашивал о gitter. Пока не повезло. Спасибо за комментарий.   -  person user986508    schedule 20.03.2018
comment
Если вы получаете консоль разработки трюфелей (поскольку я вижу _1 _) ... разве это не значит, что вы используете rpc для разработки трюфелей (с помощью truffle develop)? Это порт 9545.   -  person ReyHaynes    schedule 20.03.2018


Ответы (2)


Решите проблему.

проблема была в currentProvider, я дал URL-адрес поставщика блокчейна ganache, и он сработал.

if (typeof web3 !== 'undefined') {
console.warn("Using web3 detected from external source like Metamask")
// Use Mist/MetaMask's provider
// window.web3 = new Web3(web3.currentProvider);
window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:7545"));

  } else {
console.warn("No web3 detected. Falling back to http://localhost:8545. You should remove this fallback when you deploy live, as it's inherently insecure. Consider switching to Metamask for development. More info here: http://truffleframework.com/tutorials/truffle-and-metamask");
// fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
  }
person user986508    schedule 21.03.2018
comment
Это не лучшее решение. Вы можете оставить Metamask currentProvider и просто изменить настройку RPC-соединения в Metamask, чтобы подключиться к вашему RPC localhost. - person ReyHaynes; 23.03.2018
comment
Конечно, я согласен, вы можете мне посоветовать, если возможно, как изменить соединение RPC? Я пытался искать, но мне не повезло, или, может быть, я смотрю не в том направлении. - person user986508; 26.03.2018

В вашем truffle.js измените 8545 на 7545.

Или в Ganache (GUI) щелкните шестеренку в правом верхнем углу и измените номер порта с 7545 на 8545, затем перезапустите. С ganache-cli используйте параметр -p 8545 при запуске, чтобы установить 8545 в качестве порта для прослушивания.

В любом случае, проблема заключается в несоответствии; эти числа должны совпадать. Это обычная проблема.

Также не стесняйтесь проверить ethereum.stackexchange.com. Если вы хотите, чтобы ваш вопрос переместился туда, вы можете отметить его и оставить сообщение модератору.

person WBT    schedule 20.03.2018
comment
Спасибо, попробовал, не получилось. Между прочим, это мой ganache-cli out put. Он прослушивает порт 8545 Ganache CLI v6.1.0 (ganache-core: 2.1.0) ... Мнемоника: палатка, шлем, стул, вишневое кольцо, фольга, номинальный трофей, хаб, стихотворение, кошка, Base HD Путь: m / 44 '/ 60' / 0 '/ 0 / {account_index} Прослушивание на локальном хосте: 8545 - person user986508; 20.03.2018
comment
Какой конкретный код вы используете (с npm run dev), который вызывает ошибку? К какому порту и т. Д. Он подключается? Кроме того, разворачивали ли вы контракт с помощью truffle migrate? - person WBT; 20.03.2018
comment
Да, я перенёс трюфель, и я могу получить доступ к контакту и могу вызывать функции с помощью консоли трюфеля. Вы можете видеть, что мой ganache-cli работает на localhost: 8545, я запускаю npm run dev, а сервер запускается и слушает на localhost: 8080 - person user986508; 20.03.2018
comment
Не знаете, как связать localhost: 8080 с контрактом, пожалуйста, взгляните и на мой truffle.js. Большое спасибо за ответ. - person user986508; 20.03.2018
comment
Я прошу вас опубликовать конкретный код javascript, который выполняется после запуска npm run dev и вызывает ошибку. Где-то там вы, вероятно, создаете экземпляр web3 и настраиваете его для подключения к неправильной сети / порту. - person WBT; 20.03.2018