You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ClearScript V8 v7.4.3:箭头函数不可用及解构值修改报错咨询

使用Microsoft.ClearScript.V8 v7.4.3遇到的问题及疑问

本人在C#环境中使用Microsoft.ClearScript.V8及Microsoft.ClearScript.V8.Native.win-x64 v7.4.3版本,遇到以下问题并存在疑问:

问题1:箭头函数完全无法使用

当前版本完全无法使用箭头函数(=>),咨询该功能何时开放。

问题2:解构参数函数中+1操作抛出语法错误

编写接收解构参数的JS函数时,对解构出的value执行+1操作会抛出SyntaxError异常(报错信息中+号被截断),但*、-、/运算可正常运行。

细节补充

更新1:以下代码可正常运行(-、/运算同样正常):

(
    function({ value }){ 
        return value * 2;
    }
)

问题复现代码

脚本代码:

(
    function({ value }){ 
        return value + 1;
    }
)

输入参数:{ value: 1 }

报错信息

Microsoft.ClearScript.ScriptEngineException: SyntaxError: Unexpected number
 ---> Microsoft.ClearScript.ScriptEngineException: SyntaxError: Unexpected number
   at Microsoft.ClearScript.V8.SplitProxy.V8SplitProxyNative.ThrowScheduledException()
   at Microsoft.ClearScript.V8.SplitProxy.V8SplitProxyNative.Invoke[T](Func`2 func)
   at Microsoft.ClearScript.V8.SplitProxy.V8ContextProxyImpl.Execute(UniqueDocumentInfo documentInfo, String code, Boolean evaluate)
   at Microsoft.ClearScript.V8.V8ScriptEngine.ExecuteRaw(UniqueDocumentInfo documentInfo, String code, Boolean evaluate)
   at Microsoft.ClearScript.V8.V8ScriptEngine.ExecuteInternal(UniqueDocumentInfo documentInfo, String code, Boolean evaluate)
   at Microsoft.ClearScript.V8.V8ScriptEngine.<>c__DisplayClass130_0.<Execute>b__0()
   at Microsoft.ClearScript.ScriptEngine.ScriptInvokeInternal[T](Func`1 func)
   at Microsoft.ClearScript.V8.V8ScriptEngine.<>c__DisplayClass137_0`1.<ScriptInvoke>b__0()
   at Microsoft.ClearScript.V8.SplitProxy.V8SplitProxyManaged.InvokeHostAction(IntPtr pAction)
   --- Script error details follow ---
   SyntaxError: Unexpected number
       at Script [temp]:1:46 -> (   function({ value }){       return value  1;   })
   --- End of inner exception stack trace ---
   at Microsoft.ClearScript.V8.SplitProxy.V8SplitProxyNative.ThrowScheduledException()
   at Microsoft.ClearScript.V8.SplitProxy.V8SplitProxyNative.Invoke(Action`1 action)
   at Microsoft.ClearScript.V8.SplitProxy.V8ContextProxyImpl.InvokeWithLock(Action action)
   at Microsoft.ClearScript.V8.V8ScriptEngine.ScriptInvoke[T](Func`1 func)
   at Microsoft.ClearScript.V8.V8ScriptEngine.Execute(UniqueDocumentInfo documentInfo, String code, Boolean evaluate)
   at Microsoft.ClearScript.ScriptEngine.Evaluate(UniqueDocumentInfo documentInfo, String code, Boolean marshalResult)
   at Microsoft.ClearScript.ScriptEngine.Evaluate(DocumentInfo documentInfo, String code)
   at Microsoft.ClearScript.ScriptEngine.Evaluate(String documentName, Boolean discard, String code)
   at Microsoft.ClearScript.ScriptEngine.Evaluate(String documentName, String code)
   at Microsoft.ClearScript.ScriptEngine.Evaluate(String code)

使用场景代码(C#)

using (var v8 = new V8ScriptEngine())
{
    dynamic evaluateScript = v8.Evaluate(script); 
    
    var inputs = data.ToObject();

    var result = evaluateScript(inputs);

    return JsonConvert.SerializeObject(result);
}

辅助转换方法(C#)

public static object ToObject(this string s) {

    if (new[] { "{", "}", ":" }.Any(s.Contains))
    {
        try
        {
            return JsonConvert.DeserializeObject<ExpandoObject>(s)!;
        }
        catch (Exception ex)
        {
            return s;
        }
    }
    else if (s.ToCharArray().Any(char.IsDigit))
    {
        if (s.Contains(".")
            && double.TryParse(s, out var @double))
        {
            return @double;
        }
        else if (int.TryParse(s, out var @int))
        {
            return @int;
        }
        else {
            return s;
        }
    }
    else
    {
        return s;
    }
}

维护状态疑问

发现该项目已有十年历史,质疑是否仍在维护。

内容的提问来源于stack exchange,提问作者user1514042

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:35:14