Apigee中是否不支持JavaScript的let关键字?
Apigee中使用
let关键字报错的原因及解决办法 问题根源
Apigee传统JavaScript Policy依赖的是Mozilla Rhino引擎(多为1.7R3/R4等早期版本),该引擎对ES6及以上语法支持不完善。let是ES6引入的块级作用域变量声明,不在Rhino早期版本的支持范围内,因此编译时会抛出语法错误;而var属于ES5及更早的标准语法,完全兼容该引擎,所以能正常运行。
解决方案
- 替换为
var:这是最直接的兼容方案,将代码中的let全部替换为var即可,修改后的代码示例:
extractResourceId(resourceIdLocation, resourceIdPath); function extractResourceId(resourceIdLocation, resourceIdPath) { if (resourceIdLocation == "PATH_VARIABLE") { var resourceId = context.getVariable('proxy.pathsuffix').substring(resourceIdPath.length).split('/')[0]; context.setVariable('custom.resourceId', resourceId); return; } var resourceId = context.getVariable('request.queryparam.'.concat(resourceIdPath)); context.setVariable('custom.resourceId', resourceId); return; }
- 改用Node.js代理:如果需要使用完整的ES6+语法,可切换到Apigee的Node.js代理环境,该环境基于V8引擎,支持所有ES6及后续特性。
- 代码转译:若必须在传统JavaScript Policy中使用ES6语法,可先用Babel等工具将代码转译为ES5语法后再部署。
内容的提问来源于stack exchange,提问作者asifaftab87
相关产品推荐
相关产品推荐

