我正在尝试使用MetaMask和web3js来与我的智能合同对话。下面是我的测试代码。
这没有定义一个web3 js文件,我在控制台上得到了结果"0.20.3“。
<script>
window.addEventListener("load", function() {
// Checking if Web3 has been injected by the browser (Mist/MetaMask)
if (typeof web3 !== "undefined") {
// Use Mist/MetaMask's provider
web3 = new Web3(web3.currentProvider);
var version = web3.version.api;
console.log(version);
} else {
console.log("No web3? You should consider trying MetaMask!");
// fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
window.web3 = new Web3(
new Web3.providers.HttpProvider("https://localhost:8545")
);
});
</script>这与定义一个web3 1.0 beta-34文件有关。但我在控制台得到了“未定义”。
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.0.0-beta.34/dist/web3.min.js"></script>
<script>
window.addEventListener('load', function() {
// Check if Web3 has been injected by the browser:
if (typeof web3 !== 'undefined') {
// You have a web3 browser! Continue below!
web3 = new Web3(web3.currentProvider);
var version = web3.version.api;
console.log(version); // "0.2.0"
startApp(web3);
} else {
alert("No hay web3");
// Warn the user that they need to get a web3 browser
// Or install MetaMask, maybe with a nice graphic.
}
});
</script>发布于 2019-05-13 11:36:31
添加Peter的解释,如果您在您的chrome上安装了元问题扩展并登录,打开控制台并键入web3.version.api,您将得到"0.20.3“,因为这是元as注入的web3的版本。这就是当您第一次尝试=>时所发生的事情--“这没有定义一个web3 js文件,我在控制台上得到了结果"0.20.3”
在第二次尝试中,您正在检查web3的有效性。
if (typeof web3 !== 'undefined')
这个web3是由元one注入的。不是你剧本里的那个。稍后,您将更新此
web3 = new Web3(web3.currentProvider)
如果您注释这一行,您将得到控制台输出为"0.20.3“。在执行这一行之后,web3变量现在具有版本"1.0.0-beta.34“的Web3实例。所以你需要使用web3.version
此外,如果您添加了一个脚本文件,理想情况下,您应该按照该版本的用法定义使用api。
发布于 2019-05-13 09:23:48
他们在web3的beta版本中改变了很多apis。
如果您想知道web3.js的版本,可以使用web3.version或从package.json查看版本:
import { version } from 'web3/package.json';如果您想知道api协议的版本,请检查这个版本(源代码来自v0.2):
return [
new Property({
name: 'version.node',
getter: 'web3_clientVersion'
}),
new Property({
name: 'version.network',
getter: 'net_version',
inputFormatter: utils.toDecimal
}),
new Property({
name: 'version.ethereum',
getter: 'eth_protocolVersion',
inputFormatter: utils.toDecimal
}),
new Property({
name: 'version.whisper',
getter: 'shh_version',
inputFormatter: utils.toDecimal
})
];协议的每个版本都是一个JSONRPC调用。
https://ethereum.stackexchange.com/questions/70644
复制相似问题