Truffle & Web3 1.0.0-бета: у кого-нибудь работает?

Я пытаюсь заставить последнюю версию Truffle (3.4.3) и Web3 (1.0.0-beta11) работать вместе в приложении React.

Не получается, когда я пытаюсь позвонитьmyContractInstance.deployed()

import { default as Eth} from 'web3-eth';
import { default as Contract } from 'truffle-contract';
import myContract_artifacts from '../../build/contracts/myContract.json';
...
var eth = new Eth(Eth.givenProvider || "http://localhost:8545");
var myContractDef = Contract(myContract_artifacts);
myContractDef.setProvider( eth.currentProvider);
var myContractInstance = await myContractDef.deployed();

последняя строка выдает ошибку с http-провайдером localhost (testrpc v4.0.1):

Uncaught (in promise) TypeError: Cannot read property 'apply' of undefined
at Provider.sendAsync (bundle.js:113598)
at RequestManager.sendAsync (bundle.js:121952)
at Object.get [as getNetwork] (bundle.js:23150)
at bundle.js:114052
at Promise (<anonymous>)
at Function.detectNetwork (bundle.js:114043)
at Function.deployed (bundle.js:113991)
at App.componentDidMount (bundle.js:60259)
at bundle.js:68136
at measureLifeCyclePerf (bundle.js:67947)
at bundle.js:68135
at CallbackQueue.notifyAll (bundle.js:39530)
at ReactReconcileTransaction.close (bundle.js:70093)
at ReactReconcileTransaction.closeAll (bundle.js:26044)
at ReactReconcileTransaction.perform (bundle.js:25991)
at batchedMountComponentIntoNode (bundle.js:41397)
at ReactDefaultBatchingStrategyTransaction.perform (bundle.js:25978)
at Object.batchedUpdates (bundle.js:69759)
at Object.batchedUpdates (bundle.js:13827)
at Object._renderNewRootComponent (bundle.js:41590)
at Object._renderSubtreeIntoContainer (bundle.js:41672)
at render (bundle.js:41693)

но и с Metamask (v3.9.0):

Uncaught (in promise) Error: MetamaskInpageProvider - sendAsync not overwritten
    at MetamaskInpageProvider.sendAsync (inpage.js:219)
    at Provider.sendAsync (bundle.js:113598)
    at RequestManager.sendAsync (bundle.js:121952)
    at Object.get [as getNetwork] (bundle.js:23150)
    at bundle.js:114052
    at Promise (<anonymous>)
    at Function.detectNetwork (bundle.js:114043)
    at Function.deployed (bundle.js:113991)
    at App.componentDidMount (bundle.js:60259)
    at bundle.js:68136
    at measureLifeCyclePerf (bundle.js:67947)
    at bundle.js:68135
    at CallbackQueue.notifyAll (bundle.js:39530)
    at ReactReconcileTransaction.close (bundle.js:70093)
    at ReactReconcileTransaction.closeAll (bundle.js:26044)
    at ReactReconcileTransaction.perform (bundle.js:25991)
    at batchedMountComponentIntoNode (bundle.js:41397)
    at ReactDefaultBatchingStrategyTransaction.perform (bundle.js:25978)
    at Object.batchedUpdates (bundle.js:69759)
    at Object.batchedUpdates (bundle.js:13827)
    at Object._renderNewRootComponent (bundle.js:41590)
    at Object._renderSubtreeIntoContainer (bundle.js:41672)

У меня те же ошибки, когда я пытаюсь:

myContractDef.deployed().then( function( error, result)  { ... } )
У меня такая же проблема. Кажется в web3js 1.0 много изменений по сравнению со стабильной версией. Вы нашли какое-нибудь решение?
пока нет решения, и я не нашел никакой информации о truffle github, когда они планируют заставить его работать с web3 1.0..
У вас есть пример репозитория, который другие могли бы попробовать?
Со мной это происходит прямо сейчас... только что сделал "npm install --save" по умолчанию...

Ответы (3)

Я смог заставить его работать с недавно выпущенным файлом truffle-contract.

  • web3@1.0.0-бета.20
  • трюфель-контракт@3.0.0
  • трюфель@3.4.9

Проблемы для меня до сих пор:

  • не работает с http-провайдером: «Ошибка типа: невозможно прочитать свойство« применить »неопределенного» ОБНОВЛЕНИЕ: есть обходной путь для этой проблемы, проверьте комментарии к связанной проблеме.
  • Обновление страницы в браузере приводит к остановке функций web3. Все еще выясняю, не является ли это ошибкой в ​​моем коде. ОБНОВЛЕНИЕ: обновление Chrome до версии 61.0.3163.91 решило эту проблему.

Немного работы, необходимой для миграции, это то, что я нашел до сих пор:

  • функции утилиты перемещены в web3.utils. Например. fromWei, toWei, sha3и т.д.
  • getBalanceтеперь возвращает строку, а не BN
  • fromWei/ toWeiтеперь возвращает строку при bignumber.jsпередаче большого числа ( см. проблему )
  • web3.eth.filterудалено, web3.eth.subscribeвместо этого требуется небольшой рефакторинг
  • учетные записи, возвращаемые web3.eth.getAccountsetc., теперь имеют контрольную сумму (т. е. используются верхний/нижний регистр). Посмотреть документы

Я не могу заставить людей, занимающихся трюфелями, ответить на Gitter, но вот версия web3 , которую они используют в наборе трюфелей, которая, как известно, работает (я использую ее прямо сейчас): (от их package.json:"web3": "^0.20.1",

Я перешел на эту версию web3, и развертывание работает правильно.

Теперь я получаю, invalid addressкогда я использую контракт, но это, вероятно, другая проблема. (как ни странно договор.адрес действителен...)

Я столкнулся с аналогичной проблемой, когда web3 не работал и выдавал ту же ошибку.

Причина в том, что я использовал предположительно стабильную версию web3@0.20.6, но теперь, похоже, возникли проблемы с обратной совместимостью.

Я только что установил последнюю версию web3 (web3@1.0.0-beta.34), используя

npm install web3@latest --save

и теперь снова работает.