Better error reporting in the console. Updated ethereum.js

This commit is contained in:
obscuren 2015-03-24 17:49:28 +01:00
parent 9de1ad6546
commit c38a3b4cc7
5 changed files with 28 additions and 14 deletions

View File

@ -31,6 +31,7 @@ import (
"github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/xeth" "github.com/ethereum/go-ethereum/xeth"
"github.com/peterh/liner" "github.com/peterh/liner"
"github.com/robertkrimen/otto"
) )
type prompter interface { type prompter interface {
@ -101,8 +102,7 @@ func (js *jsre) apiBindings() {
jethObj := t.Object() jethObj := t.Object()
jethObj.Set("send", jeth.Send) jethObj.Set("send", jeth.Send)
_, err := js.re.Eval(re.BigNumber_JS) err := js.re.Compile("bignum.js", re.BigNumber_JS)
if err != nil { if err != nil {
utils.Fatalf("Error loading bignumber.js: %v", err) utils.Fatalf("Error loading bignumber.js: %v", err)
} }
@ -113,12 +113,12 @@ func (js *jsre) apiBindings() {
utils.Fatalf("Error defining setTimeout: %v", err) utils.Fatalf("Error defining setTimeout: %v", err)
} }
_, err = js.re.Eval(re.Ethereum_JS) err = js.re.Compile("ethereum.js", re.Ethereum_JS)
if err != nil { if err != nil {
utils.Fatalf("Error loading ethereum.js: %v", err) utils.Fatalf("Error loading ethereum.js: %v", err)
} }
_, err = js.re.Eval("var web3 = require('web3');") _, err = js.re.Eval("var web3 = require('ethereum.js');")
if err != nil { if err != nil {
utils.Fatalf("Error requiring web3: %v", err) utils.Fatalf("Error requiring web3: %v", err)
} }
@ -128,10 +128,10 @@ func (js *jsre) apiBindings() {
utils.Fatalf("Error setting web3 provider: %v", err) utils.Fatalf("Error setting web3 provider: %v", err)
} }
_, err = js.re.Eval(` _, err = js.re.Eval(`
var eth = web3.eth; var eth = web3.eth;
var shh = web3.shh; var shh = web3.shh;
var db = web3.db; var db = web3.db;
var net = web3.net; var net = web3.net;
`) `)
if err != nil { if err != nil {
utils.Fatalf("Error setting namespaces: %v", err) utils.Fatalf("Error setting namespaces: %v", err)
@ -211,7 +211,11 @@ func (self *jsre) parseInput(code string) {
}() }()
value, err := self.re.Run(code) value, err := self.re.Run(code)
if err != nil { if err != nil {
fmt.Println(err) if ottoErr, ok := err.(*otto.Error); ok {
fmt.Println(ottoErr.String())
} else {
fmt.Println(err)
}
return return
} }
self.printValue(value) self.printValue(value)

View File

@ -3,7 +3,7 @@
<title>JevCoin</title> <title>JevCoin</title>
<head> <head>
<script type="text/javascript" src="../ext/bignumber.min.js"></script> <script type="text/javascript" src="../ext/bignumber.min.js"></script>
<script type="text/javascript" src="../ext/ethereum.js/dist/ethereum.js"></script> <script type="text/javascript" src="/Users/jeffrey/ethereum.js"></script>
</head> </head>
<body> <body>
@ -32,7 +32,7 @@
</body> </body>
<script type="text/javascript"> <script type="text/javascript">
var web3 = require('web3'); var web3 = require('ethereum.js');
var eth = web3.eth; var eth = web3.eth;
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545')); web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));

File diff suppressed because one or more lines are too long

View File

@ -2,9 +2,10 @@ package jsre
import ( import (
"fmt" "fmt"
"github.com/robertkrimen/otto"
"io/ioutil" "io/ioutil"
"github.com/robertkrimen/otto"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
) )
@ -113,3 +114,12 @@ func (self *JSRE) Eval(code string) (s string, err error) {
} }
return fmt.Sprintf("%v", val), nil return fmt.Sprintf("%v", val), nil
} }
func (self *JSRE) Compile(fn string, src interface{}) error {
script, err := self.vm.Compile(fn, src)
if err != nil {
return err
}
self.vm.Run(script)
return nil
}

View File

@ -50,7 +50,7 @@ func (api *EthereumApi) Close() {
func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error { func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error {
// Spec at https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC // Spec at https://github.com/ethereum/wiki/wiki/Generic-JSON-RPC
rpclogger.Debugf("%s %s", req.Method, req.Params) rpclogger.Infof("%s %s", req.Method, req.Params)
switch req.Method { switch req.Method {
case "web3_sha3": case "web3_sha3":