英文:
Go failed to call JavaScript function because buffer was introduced into JavaScript code
问题
Go调用JavaScript函数失败,因为缓冲区被引入到JavaScript代码中。
secret.js
import Buffer from 'buffer';
var Q = function(e) {
return new Buffer("asdfl");
};
main.go
func main() {
jsFile := "./secret.js"
bytes, err := ioutil.ReadFile(jsFile)
if err != nil {
panic(err)
}
vm := otto.New()
_, err = vm.Run(string(bytes))
if err != nil {
panic(err)
}
enc, err := vm.Call("Q", nil, "123456")
if err != nil {
panic(err)
}
fmt.Println(enc.String())
}
错误提示
(anonymous): Line 1:1 Unexpected reserved word
英文:
Go failed to call JavaScript function because the buffer was introduced into JavaScript code
secret.js
import Buffer from 'buffer'
var Q = function(e) {
return new Buffer("asdfl")
};
main.go
func main() {
jsFile := "./secret.js"
bytes, err := ioutil.ReadFile(jsFile)
if err != nil {
panic(err)
}
vm := otto.New()
_, err = vm.Run(string(bytes))
if err != nil {
panic(err)
}
enc, err := vm.Call("Q", nil, "123456")
if err != nil {
panic(err)
}
fmt.Println(enc.String())
}
error tips
(anonymous): Line 1:1 Unexpected reserved word
答案1
得分: 1
otto只实现了Javascript ES5,而import
是ES6的一个特性,所以你不能在你的JS代码中使用import
。
更新:
你可以参考这篇帖子来实现自己的require
方法。
英文:
otto only implemented Javascript ES5 while import
is a feautre of ES6, so you couldn't use import
in your JS code.
update:
You can follow this post to implement your own require
method
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论