TypeError: не удается прочитать вызов свойства неопределенного

Итак, я только начинаю работать с Truffle и создал свой первый код Solidity, который выглядит так:

pragma solidity ^0.4.4;
contract HelloWorld
{

function SayHello() internal pure returns (string)
{
    return ("Hello World!");
}

}

Затем я открыл Powershell и выполнил следующую команду: testrpc Затем я скомпилировал и перенес свой код, используя компиляцию «трюфель» и «миграцию трюфеля».

Проблемы начались, когда я открыл «трюфельную консоль» и сделал это, выдав мне ошибку в конце:

PS C:\Users\**\MetaCoin> truffle console

truffle(development)> var hw

undefined

truffle(development)> HelloWorld.deployed().then(function(deployed){hw=deployed});

undefined

truffle(development)> hw.SayHello.call()

**TypeError: Cannot read property 'call' of undefined**

truffle(development)>

Может кто-то помочь мне с этим? Спасибо.

Ответы (1)

Это асинхронно.

Пытаться

> var hw;
> var saidSomething;
> HelloWorld.deployed().then(... hw = instance; });
> hw.SayHello().then(function(response) { saidSomething = response; }); 
> saidSomething;
Hello World!    <=== worked?

Надеюсь, поможет.

Большое вам спасибо за ответ. Я получил ошибку, когда дошел до этой строки: > HelloWorld.deployed().then(... hw = instance; }); который выглядел так:
evalmachine.<anonymous>:1 HelloWorld.deployed().then(... hw = instance;}); ^^^^^^^^ SyntaxError: отсутствует ) после списка аргументов в новом скрипте (vm.js:51:7) в createScript (vm.js:136:10) в Object.runInContext (vm.js:181:10) ) в Console.interpret
Мне удалось улучшить его, и он стал таким: HelloWorld.deployed().then(hw = instance); с этой ошибкой: ReferenceError: экземпляр не определен
HelloWorld.deployed().then(функция(экземпляр) { hw = экземпляр; }); // экземпляр — это имя, которое вы даете ответу развернутого метода.
TypeError: hw.SayHello не является функцией
это ошибка, которую я получаю: > hw.SayHello().then(function(response) { saySomething = response; });
Извините, я могу быть немного раздражающим, я просто нуб, пробующий воду
Это будет означать, что hwэто не экземпляр контракта, который, как мы думаем, из предыдущего шага... HelloWord.deployed() ... Вы можете > hwраспечатать его, и вы должны увидеть методы контракта или что-то не так.
Нет, когда я это делаю, кажется, что все в порядке. Мне нравится очень длинный список: TruffleContract {structor: { [Function: TruffleContract] _static_methods: { setProvider: [Function: setProvider], new: [Function: new], at: [Function: at], но в остальном единственное, что выделяется: transactionHash: null,