golang otto加载JS错误

时间:2016-06-09 05:15:05

标签: go

奥托加载的js文件错误:(匿名):第1行:59374无效的正则表达式:re2:无效(?=)(还有1个错误)

附上主要代码

vm := otto.New()
vm.Set("require", require)
val,err := vm.Run(`
    require("raphael.js");
`)

Enclose Load方法

func require(call otto.FunctionCall) otto.Value {
    file := call.Argument(0).String()
    fmt.Printf("requiring: %s\n", file)
    data, err := ioutil.ReadFile(file)
    if err != nil {
        fmt.Println(err)
        panic(err)
    }
    _, err = call.Otto.Run(string(data))
    if err != nil {
        fmt.Println(err)
        panic(err)
    }
    return otto.TrueValue()
}

Js文件地址(我在本地保存)

http://index.baidu.com/static/js/raphael.js

1 个答案:

答案 0 :(得分:0)

问题出现是因为otto不完全支持正则表达式。

在奥托的文件中,他们说:

(?=)  // Lookahead (positive), currently a parsing error
(?!)  // Lookahead (backhead), currently a parsing error
\1    // Backreference (\1, \2, \3, ...), currently a parsing error

https://github.com/robertkrimen/otto#regular-expression-incompatibility