#web3
#javascript #web3js
Вопрос:
После обновления Web3 с 1.0.0-beta.34
на 1.0.0-beta.37
попытку получить доступ к любым свойствам Web3.utils
, Web3.eth
, Web3.bzz
и Web3.shh
выдаст ошибку. Например, вызов web3.utils.utf8ToHex('some string')
at 2_deploy_contract.js
следующим образом:
const Web3 = require('web3');
web3.utils.utf8ToHex('some string');
Вызывает следующее исключение:
> TypeError: Cannot read property 'utf8ToHex' of undefined
И я обнаружил, что следующий фрагмент кода:
const Web3 = require('web3');
console.log("Web3.eth = " Web3.eth)
console.log("Web3.utils = " Web3.utils)
console.log("Web3.bzz = " Web3.bzz)
console.log("Web3.shh = " Web3.shh)
Выведет:
> Web3.eth = undefined
> Web3.utils = undefined
> Web3.bzz = undefined
> Web3.shh = undefined
Ответ №1:
Статические свойства ( Web3.utils
, Web3.eth
и т. Д.) Были удалены, Потому что, если кто-то просто использует utils
, Ему, вероятно, следует использовать модуль web3-utils
and web3-eth
напрямую, вместо того, чтобы связывать полную библиотеку (ссылка).
Пример рабочего кода:
const Web3Utils = require('web3-utils');
const someString = Web3Utils.utf8ToHex('some string');
Примечание: долгосрочной целью будет удаление класса Web3 и создание пространства имен Web3. Но это будет сделано после стабильной версии (ссылка).