Javascript 如何在使用VelocityJS解析VTL时修复“JSON中意外的令牌$in”

Javascript 如何在使用VelocityJS解析VTL时修复“JSON中意外的令牌$in”,javascript,aws-appsync,vtl,Javascript,Aws Appsync,Vtl,为了为我的AppSync解析器编写单元测试,我使用VelocityJS包解析sam模板内部的VTL。但是,VTL模板没有被完全解析 代码在AWS上运行良好,出错的是单元测试。 使用let result=Velocity.parsetemplate时,ctx;结果是字符串$util.toJson$ctx.result,而不是$ctx.result的JSON值 即: 我认为解析问题的原因是util和ctx/context都是AppSync概念,而不是VTL概念。当您使用第三方库时,他们不知道这意味

为了为我的AppSync解析器编写单元测试,我使用VelocityJS包解析sam模板内部的VTL。但是,VTL模板没有被完全解析

代码在AWS上运行良好,出错的是单元测试。

使用let result=Velocity.parsetemplate时,ctx;结果是字符串$util.toJson$ctx.result,而不是$ctx.result的JSON值

即:


我认为解析问题的原因是util和ctx/context都是AppSync概念,而不是VTL概念。当您使用第三方库时,他们不知道这意味着什么,也无法替换它们

您可能会发现Amplify的新模拟和测试工具非常有用:

如果上面的内容不适合您的用例,那么还有其他第三方库可以很好地涵盖AppSync本地开发,值得一看

#if($util.isNullOrBlank($ctx.result.themePreferences))
    #set($themePreverences = {})
    $util.qr($themePreverences.put("darkMode", "DEFAULT"))
    $util.qr($ctx.result.put("themePreferences", $themePreverences))
#end
$util.toJson($ctx.result)
{ "themePreferences": { "darkMode": "DEFAULT" } }