如何使用 VelocityJS 解析 VTL 时修复"Unexpected token $ in JSON"



为了为我的 AppSync 解析器编写单元测试,我正在使用 VelocityJS 包来解析我的 sam 模板中的 VTL。但是,未完全解析 VTL 模板。

代码在 AWS 上运行良好,是单元测试出错。 https://github.com/shepherdwind/velocity.js

#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)

使用let result = Velocity.parse(template, ctx);时,结果是字符串"$util.toJson($ctx.result)"而不是 JSON 值$ctx.result

即:

{ "themePreferences": { "darkMode": "DEFAULT" } }

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

您可能会发现Amplify的新模拟和测试工具很有帮助:https://aws-amplify.github.io/docs/cli-toolchain/quickstart?sdk=js#mocking-and-testing

还有其他第三方库可以很好地涵盖值得一试的 AppSync 本地开发,如果上述内容不适合您的使用案例。

相关内容

  • 没有找到相关文章

最新更新