javascript - 当我尝试使用 JavaScript 调用智能合约函数时,它们显示为未定义
问题描述
首先,我对 JavaScript 和 web3 还很陌生,所以如果问题很琐碎,请原谅。
if (typeof web3 !== 'undefined') {
web3Provider = web3.currentProvider;
web3 = new Web3(web3.currentProvider);
} else {
web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
web3 = new Web3(App.web3Provider);
}
这是我目前实例化 web3 的方式,不确定它是否已被弃用(我觉得这可能是问题所在)
当我尝试像这样记录 getAccounts() 函数时
console.log(web3.eth.getAccounts())
我面临:
web3.min.js:2 Uncaught (in promise) TypeError: e is not a function
at web3.min.js:2
at web3.min.js:2
at r (inpage.js:1)
at s._handle (inpage.js:17)
并且当我尝试调用我的solidity函数时,即一个名为“addFood()”的函数,它接受4个这样的参数,
var eth_pk = document.getElementById("pk").value
console.log(eth_pk) //console.log logs the output values in the javascript console.
var eth_fd = document.getElementById("fd").value
console.log(eth_fd)
var eth_pl = document.getElementById("pl").value
console.log(eth_pl)
var eth_prc = document.getElementById("prc").value
console.log(eth_prc)
contract.methods.addFood(eth_pk, eth_fd, eth_pl, eth_prc).send({ from: web3.eth.defaultAccount }, function(error, result)
{
console.log(result)
})
我面临
Uncaught TypeError: Cannot read properties of undefined (reading 'addFood')
at HTMLFormElement.<anonymous> (sell.html:208)
我将提供解决此问题所需的任何其他代码。如果有人能解决这个问题,我将不胜感激!谢谢!
解决方案
您可能正在使用 MetaMask,在这种情况下,您的提供者是 window.ethereum
推荐阅读
- html - 如何生成 CSS3 形状
- python - 在 pandas 上选择一列(来自时间戳的 datetime.date 的结果)
- ios - 更改 .xcarchive 上的签名团队
- php - 如何以最简单的方式将键和值添加到数组
- python - keras - tensorflow - LSTM - csv - 如何使用 fit_generator
- asp.net - 从网站转换为 Web 应用程序后,Syste.Web.Ui.Page 为“未定义”
- python - `mp.pool` 正常工作时`mp.pool.ThreadPool` 失败
- javascript - React-Router V2, V4 - 如何在 react-router V4 中使用 react-router V2 的“路由器”?
- typescript - 量角器 + 茉莉花 + TS。打字问题:xit 返回无效。如何使用 xit().pend(原因)
- vba - 选择现有形状时出现错误 86db089e