为啥我的 web3 导入无法正常工作?

Posted

技术标签:

【中文标题】为啥我的 web3 导入无法正常工作?【英文标题】:why is my web3 import not working properly?为什么我的 web3 导入无法正常工作? 【发布时间】:2021-12-30 07:41:29 【问题描述】:

我正在使用 truffle 和 mocha 来测试我的智能合约。我需要 web3 像这样 const web3 = require('web3')

导入似乎只能部分起作用。 例如,这个语句可以正常工作

const amount = web3.utils.toWei('0.23')

不过这个说法

const balance = await web3.eth.getBalance(myContract.address)

导致以下错误消息:

TypeError 无法读取未定义的属性“getBalance”。

此外,如果我在以下代码中悬停单词 eth,Visual Studio Code 会给我以下错误消息:

web.eth.getBalance(myContract.address)

typeof 导入时不存在属性“eth”(/Users/eitanbronschtein/Desktop/fundraiser/node_modules/web3/types/index)

我使用的是 javascript 而不是打字稿。

发生了什么事?

【问题讨论】:

【参考方案1】:

没有提供者,web3 无法工作。安装ganach-cli

const ganache = require("ganache-cli");
const Web3 = require("web3");

// this is in local ganache network gasLimit has to be set to 10million and and factory gas must be 10million
// if u get error about gasLimit, this keep changing. look for docs
const web3 = new Web3(ganache.provider( gasLimit: 10000000 ));

如果你设置了 truffle suit,你的项目中应该有“test”目录,web3 已经设置好了并且可以全局使用

【讨论】:

【参考方案2】:

Web3 类是一个包含所有以太坊相关模块的综合包。

var Web3 = require('web3');

// "Web3.providers.givenProvider" will be set if in an Ethereum supported browser.
var web3 = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8546');

//now you can do web3.eth

【讨论】:

以上是关于为啥我的 web3 导入无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 javascript 在 github 页面上无法正常工作?

为啥我的 CUDA 代码无法正常工作以零填充大型矩阵?

为啥我的 JavaScript 在 Safari 的严格模式下无法正常工作?

为啥重新安装我的 iOS 应用后 Firebase Messaging 无法正常工作?

为啥我的邮递员基本身份验证无法正常工作?

为啥我的 mongoDB 托管 mongoid.yml 的 uri 设置无法正常工作?