Невозможно подключить Ganache к серверу Truffle/Npm Dev
Я умею работать с Трюфелем и Ганаш-клиом. Развернули контракт и можете поиграть с ним, используя трюфельную консоль
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)
Это мой трюфель
// 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
}
}
}
Можете ли вы указать мне, как я могу подключиться?
3 ответа
Решите проблему.
проблема была в 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"));
}
В вашем truffle.js
, менять 8545
в 7545
,
Или, в Ganache (GUI), щелкните шестерню в правом верхнем углу и измените номер порта с 7545
в 8545
, затем перезагрузите. С использованием ganache-cli -p 8545
опция при запуске, чтобы установить 8545 в качестве порта для прослушивания.
В любом случае проблема заключается в несоответствии; эти цифры должны совпадать. Это общая проблема.
Также не стесняйтесь проверить https://ethereum.stackexchange.com/. Если вы хотите, чтобы ваш вопрос был перенесен туда, вы можете пометить его и оставить сообщение для модератора.
Измените интерфейс на 0.0.0.0 (все интерфейсы) в настройках ганаша > сервер.
В truffle-config.js используйте провайдер вместо конфигурации хоста по умолчанию:
const HDWalletProvider = require("@truffle/hdwallet-provider")
networks: {
development: {
provider: () => new HDWalletProvider([
"YOUR_PRIVATE_KEY",
], "http://127.0.0.1:7545/"),
port: 7545,
network_id: "*" // Match any network id
}
}