Использовать открытые свойства и метод контрактов солидности в web3js.Error: Неверная строка байтов: 0x - PullRequest
0 голосов
/ 02 марта 2019

Я хочу использовать свойство и метод контракта с помощью web3js:

версии:

  "ganache-cli": "^6.2.3",
  "mocha": "^6.0.1",
  "solc": "^0.5.0",
  "web3": "^1.0.0-beta.37"

Imooc.sol:

pragma solidity ^0.5.0;

contract Course {
    string public name;

    constructor(string memory _name) public {
        name = _name;
    }

    function getName() public view returns (string memory) {
        return name;
    }
}

Этот контракт хорошо работает в ремиксе.

В моем проекте я использую мокко для проверки контракта.

course.spec.js:

const path = require('path');
const assert = require('assert');
const Web3 = require('web3');

const web3 = new Web3('ws://localhost:8545');

const Imooc = require(path.resolve(__dirname, '../src/compiled/Imooc.json'));

let accounts;

describe('test', () => {
  before(async () => {
    accounts = await web3.eth.getAccounts();

    myCourse = await new web3.eth.Contract(Imooc.Course.abi, accounts[0]);

    myCourse.deploy({
      data: Imooc.Course.evm.bytecode.object,
      arguments: ['vue course']
    }).send({
      from: accounts[0]
    });
  });
  it('test 1', async () => {
    const name = await myCourse.methods.name().call();
    // const name = await myCourse.methods.getName().call();
    console.log(name);
  })
});

enter image description here

Я не знаю, почему такой простой код не может работать, я смотрю документы и проблемы web3js, но не могу решить. И я пытаюсь обновить ganache до 6.3.0, web3js до beta.47, ничего не изменилось.

...