我试图在Golang函数中运行JavaScript,并使用fetch通过Javascript上下文中的API获取JSON。
我在Otto中尝试了以下代码:
import "github.com/robertkrimen/otto" vm := otto.New()
vm.Run(`
function tryfunc() {
console.log("Started");
fetch('https://www.example.com/APIendpoint');
console.log("Success");
}
tryfunc();
`)Otto的使用非常简单,但看起来Otto是一个事件总线,并不能管理fetch。
现在,我正在尝试使用v8go的以下代码:
import v8 "rogchap.com/v8go"ctx := v8.NewContext()
ctx.RunScript(`fetch("https://www.example.com/APIendpoint"), ""`)但这需要另一种说法。文档非常不清楚,甚至很难理解如何运行最简单的JS脚本。
有人能帮忙吗?
发布于 2022-07-05 17:01:58
Otto和v8实现了ECMAScript,目前的13.0版本不需要内置函数fetch (参见:https://262.ecma-international.org/13.0/#sec-function-properties-of-the-global-object),该函数是由web浏览器实现的。
我认为第二个参数只是一个文件名来前缀调试输出(例如: foo.js:14:未定义的栏),这在解释器中是非常常见的。
如果您打印出来自RunScript的输出(您忽略了返回值、JavaScript值和错误),我怀疑您的脚本确实运行了,它应该有一个“未定义的函数提取”和值nil。FYI有一个在fetch中实现v8go文档的示例。
https://stackoverflow.com/questions/72870879
复制相似问题