TypeError: Eigenschaft 'call' von undefined kann nicht gelesen werden

Im Grunde fange ich also gerade erst mit Truffle an und habe meinen ersten Solidity-Code erstellt, der so aussieht:

pragma solidity ^0.4.4;
contract HelloWorld
{

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

}

Ich habe dann Powershell geöffnet und den folgenden Befehl ausgeführt: testrpc Dann habe ich meinen Code mit "Trüffel"-Kompilierung und "Trüffel-Migration" kompiliert und migriert.

Die Probleme traten auf, als ich "Truffle Console" öffnete und dies tat, was mir am Ende einen Fehler gab:

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)>

Kann mir jemand dabei helfen? Danke.

Antworten (1)

Es ist asynchron.

Versuchen

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

Ich hoffe es hilft.

Vielen Dank für die Antwort. Ich habe eine Fehlermeldung erhalten, als ich diese Zeile erreicht habe: > HelloWorld.deployed().then(... hw = instance; }); die so aussah:
evalmachine.<anonym>:1 HelloWorld.deployed().then(... hw = instance;}); ^^^^^^^^ SyntaxError: missing ) after argument list at new Script (vm.js:51:7) at createScript (vm.js:136:10) at Object.runInContext (vm.js:181:10 ) bei Console.interpret
Ich habe es geschafft, es zu verbessern, so dass es wurde: HelloWorld.deployed().then(hw = instance); mit diesem Fehler: ReferenceError: Instanz ist nicht definiert
HelloWorld.deployed().then(function(instance) { hw = instance; }); // Instanz ist der Name, den Sie der Antwort der bereitgestellten Methode geben.
TypeError: hw.SayHello ist keine Funktion
das ist der Fehler, den ich erhalte: > hw.SayHello().then(function(response) { saidSomething = response; });
Entschuldigung, ich könnte ein bisschen nervig sein, ich bin nur ein Noob, der das Wasser testet
Das würde bedeuten, dass hwes sich nicht um die Vertragsinstanz handelt, von der wir glauben, dass sie aus einem vorherigen Schritt stammt ... HelloWord.deployed() ... Sie können > hwsie ausdrucken und Sie sollten die Vertragsmethoden sehen, oder etwas stimmt nicht.
Nein, wenn ich das mache, scheint alles in Ordnung zu sein. Ich mag eine wirklich lange Liste: TruffleContract { constructor: { [Function: TruffleContract] _static_methods: { setProvider: [Function: setProvider], new: [Function: new], at: [Function: at], aber ansonsten das Einzige was auffällt ist: transactionHash: null,