记录学习pet-shop的一些坑

pet-shop是一个比较好的小项目用来熟悉truffle以及以太坊开发流程。
首先最大的坑肯定是环境的问题,我的配置:

Truffle v5.3.4 (core: 5.3.4)
Solidity v0.5.16 (solc-js)
Node v14.17.0
Web3.js v1.3.5
ganache-cli@6.12.2 
ubuntu16.04

如果有很多小伙伴出现问题实在解决不了,可以考虑换一下环境

npm uninstall truffle 
npm intsall -g truffle@5.3.4//-g是全局安装,不需要配置环境

首先说一下具体的流程

1.安装truffle和ganache-cli
2.创建文件目录
3.进入之后truffle unbox pet-shop,这时候就有了文件目录和架构以及基本配置文件
4.进入contracts目录下创建和编写智能合约
5.进行合约编译truffle compile,编译完成后会生成build/contracts文件
6.启动ganache-cli
7.在migrate目录下创建部署脚本
8.进行合约部署truffle migrate//这里部署都是在ganache搭建的测试链上,所以区块链必须连接成功才可以继续运行
9.智能合约测试,写合约
10.进行测试truffle test
11.编写js与前端页面进行交互

  • 初始化web3
  • 初始化合约
  • 获取领养的宠物并更新界面
  • 处理adopt()方法

12.配置matemask
13.启动页面npm run dev
14.进行交互

错误集锦及解决方案

  • 1.编写合约时,getAdopters()时需要返回值,教程写的是address[16],solidity版本升级之后,需要标注存储的位置,所以需要在后面加上memory,不需要再使用storage存到链上
  • 2.编写测试合约时,address expected =this;会报错,不可以隐式地转变为地址类型,所以需要进行强转address expected =address(this);
  • 3.前端页面不显示图片,这是因为index.html调用的jquery链接加载不出来,替换源
原来的:<script  src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
新的:<script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
  • 4.连不上metamask,这个是最难受的,一直提示invalid address,调试了半天,出在了js那里,要获取账户地址var account =accounts[0],但是往控制台上输出结果是undefined,所以根本没有获取到账户,检查了之后发现Ganache没有问题,所以尝试了直接将地址传进去,但是发现不能识别,说是必须是以太坊类型的地址。之后,网页提示说是可能currentProvider不再支持,所以想到应该是js初始化web3出来问题,所以换了一个写法。
initWeb3: async function() {
      /*
       * Replace me...
       */
      if(window.ethereum){
          App.web3Provider =window.ethereum;
         try{

            await window.ethereum.enable();
         }catch(error){
             console.error("User dennied account access")
         }
      }
      else if (window.web3){
          App.web3Provider =window.web3.currentProvider;
      }
      else{
          App.web3Provider=new Web3.providers.HttpProvider('http://127.0.0.1:8545');
      }
      web3= new Web3(App.web3Provider);
      return App.initContract();
    },

新的调用方法。终于成功了!
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值