Javascript 未捕获(承诺中)错误:否“;从「;在给定选项和默认选项中指定的地址

Javascript 未捕获(承诺中)错误:否“;从「;在给定选项和默认选项中指定的地址,javascript,reactjs,blockchain,ethereum,web3,Javascript,Reactjs,Blockchain,Ethereum,Web3,我想知道是否有人能为我正在进行的一个项目提供正确的指导,该项目是Udemy课程的一部分(ethereum和solidity完整的开发者指南) 因此,我目前正致力于整合Kickstarter备选方案的前端。我面临的问题在于new.js文件,该文件作为一个js文件,表示一个新页面,其中包含一个按钮,允许用户创建一个新活动(通过metamask执行实际事务) import React,{Component}来自'React'; 从“语义ui反应”导入{Form,Button,Input}; 从“../

我想知道是否有人能为我正在进行的一个项目提供正确的指导,该项目是Udemy课程的一部分(ethereum和solidity完整的开发者指南)

因此,我目前正致力于整合Kickstarter备选方案的前端。我面临的问题在于
new.js
文件,该文件作为一个js文件,表示一个新页面,其中包含一个按钮,允许用户创建一个新活动(通过metamask执行实际事务)

import React,{Component}来自'React';
从“语义ui反应”导入{Form,Button,Input};
从“../../components/Layout”导入布局;
从“../../ethereum/factory”导入工厂;
从“../../ethereum/web3”导入web3;
要求(“巴别塔-polyfill”);
类的新扩展组件{
状态={
最小贡献:“”
};
//记录和跟踪用户更改和输入
onSubmit=async(事件)=>{
event.preventDefault();
const accounts=wait web3.eth.getAccounts();
等待工厂的方法
.createCampaign(此.state.minimumContribution)
.send({from:accounts[0]});
};
render(){
返回(
创建一个活动
最低供款
this.setState({minimumContribution:event.target.value})}
/>
创造!
);
}
}
出口新产品;
现在在页面本身上,当我尝试单击createcampaign按钮时,它有一个onChange处理程序,可以记录输入。尝试单击与OneEvent处理程序挂钩的按钮后出现的错误会生成以下内容:

errors.js?207caff:127 Uncaught (in promise) Error: No "from" address specified in neither the given options, nor the default options.
    at Object.ContractNoFromAddressDefinedError (errors.js?207caff:127)
    at Object._executeMethod (index.js?901a092:775)
    at CampaignNew._callee$ (new.js?bfcc6bf:22)
    at tryCatch (runtime.js?af915c5:62)
    at Generator.invoke [as _invoke] (runtime.js?af915c5:296)
    at Generator.prototype.<computed> [as next] (runtime.js?af915c5:114)
    at step (asyncToGenerator.js?210f254:17)
    at asyncToGenerator.js?210f254:28
errors.js?207caff:127未捕获(承诺中)错误:给定选项和默认选项中均未指定“发件人”地址。
在Object.ContractNoFromAddressDefinedError(errors.js?207caff:127)处
at Object._executeMethod(index.js?901a092:775)
在CampaignNew._callee$(new.js?bfcc6bf:22)
在tryCatch(runtime.js?af915c5:62)
在Generator.invoke[as_invoke](runtime.js?af915c5:296)
在发电机上。原型。[作为下一步](runtime.js?af915c5:114)
在步骤(asyncToGenerator.js?210f254:17)
在asyncToGenerator.js?210f254:28

我按照课程的指示使用web3 1.0.0-beta26,因此我们可以使用相同的语法。我更新了truffle HD钱包,并且我认为它可能会阻止与Metamask的正确连接,以便可以运行交易并创建活动。我不知道还能做些什么,所以如果有人能感激地指引我正确的方向,那就太好了。

//在你的web3.js中尝试添加一个
在底部
}

web3 = new Web3(provider);

}; (<-- Add semicolon here)

export default web3;
这将连接钱包,但不是最终解决方案。如果连接到钱包后出现更多问题。再次删除
.enable()
,您应该能够进行事务处理。

谢谢。
.enable()
这件事确实解决了这个问题。
web3 = new Web3(provider);

}; (<-- Add semicolon here)

export default web3;
if (typeof window !== 'undefined' && typeof window.web3 !== 'undefined') {
// We are in the browser and Metamask is running
web3 = new Web3(window.web3.currentProvider.enable())