2017-09-05 33 views
-2

我正在使用go語言進行項目。我需要運行一段js代碼。我知道有一個包是奧托。我的問題是,我如何得到js代碼的詳細錯誤信息。例如:如何編譯golang中的javascript代碼並獲取詳細錯誤

src :=` 
     abc = 2 + 
     console.log("The value of abc is " + abc) 
` 

當我做某事比如說compile(src)
然後我會得到這樣的錯誤: 在第二行錯過了一些東西,錯過';'在第三線。
就像編譯器一樣

我已經嘗試使用otto編譯之前,我發佈的問題,返回的錯誤是零。 使用奧托func (self Otto) Run(src interface{}) (Value, error)上面的代碼將返回錯誤,但如果代碼成爲

abc = 9 
abc = 2 + 
console.log("The value of abc is " + abc) 

兩個func (self Otto) Run(src interface{}) (Value, error)func (self *Otto) Compile(filename string, src interface{}) (*Script, error)錯誤是零

+0

的你的例子都不是在JavaScript錯誤。分號在JS中不是必需的。你的例子實際上增加了2 + console.log的結果。 –

+0

我敢打賭,在運行期間你的錯誤是「abc沒有定義」,因爲你在設置之前試圖在console.log調用中使用abc。不是語法錯誤,因爲您可能已經以其他方式定義了它。 –

回答

1

我要丁酉研究不足。一個簡單的谷歌「golang奧托」帶來了the Github page.有一個相當不錯的README.markdown文檔。閱讀。

然後你會發現,奧托

func (self *Otto) Compile(filename string, src interface{}) (*Script, error) 

這是好得不能再好。運行它,看看你在返回的錯誤值中得到了什麼。

Also from the documentation:

type Error struct { 
} 

An Error represents a runtime error, e.g. a TypeError, a ReferenceError, etc. 

func (err Error) Error() string 

Error returns a description of the error 

func (err Error) String() string 

String returns a description of the error and a trace of where the error occurred. 
+0

謝謝你的回答。但是我認爲在你給我答案之前你沒有嘗試你所說的話。我嘗試發佈問題之前,用func(self * Otto)編譯(文件名字符串,src接口{})(*腳本,錯誤)。錯誤是零。 – NHa