在我的开发环境中,我有一个React应用程序可以连接到浏览器的Metamask,但是部署在Netlify上的版本无法连接到Metamask。我获得web3提供程序的代码是
import Web3 from "web3"; //get the browser's web 3 provider export const web3 = new Web3(window.ethereum);
这是我用来部署在本地工作的智能契约的代码:
import { web3 } from "./web3";
import { getWarranty } from "./getWarranty";
import warrantyByteCode from "./warrantyByteCode";
export async function deployWarranty(warrantyArguments) {
let warrantyContract = await getWarranty();
let gas = await warrantyContract.deploy({data:warrantyByteCode, arguments: warrantyArguments}).estimateGas((err, g) => console.log(g));
const accounts = await web3.eth.getAccounts((err, accounts) => { return accounts} );
let params = {gas: gas, from: accounts[0]}
return await warrantyContract.deploy({data:warrantyByteCode, arguments: warrantyArguments}).send(params)
.then(function(newContractInstance){
return newContractInstance.options.address // instance with the new contract address
});
}在生产过程中,等待web3.eth.getAccounts()返回一个空数组,但在本地开发中,它返回我在元询问实例中选择的帐户。在这两种环境中都应该是相同的,所以我不知道为什么它只在本地工作。
发布于 2022-04-28 15:35:30
我所要做的就是使用这里指令手动连接到元询问。
https://ethereum.stackexchange.com/questions/127087
复制相似问题