APIGEE - 不支持解构声明中的默认值

问题描述 投票:0回答:1

我正在编写一个javascript来验证客户端IP是否在白名单IP范围内。我收到错误

JavaScript jsc://ApiKeyPathValidator.js 编译失败 错误:编译错误:解构声明中的默认值 不支持(ApiKeyPathValidator#323)。行:323,列:23。 来源为:const [range, bits = 32] = cidr.split('/')

Javascript代码如下

const ip4ToInt = ip =>
  ip.split('.').reduce((int, oct) => (int << 8) + parseInt(oct, 10), 0) >>> 0;

const isIp4InCidr = ip => cidr => {
  const [range, bits = 32] = cidr.split('/');
  const mask = ~(2 ** (32 - bits) - 1);
  return (ip4ToInt(ip) & mask) === (ip4ToInt(range) & mask);
};

var whitelistedCidr=['10.0.0.1', '10.1.1.1/21','10.0.0.1'];
var clientIp=getEnv("request.header.X-Forwarded-For");


const isIp4InCidrs = (ip, cidrs) => cidrs.some(isIp4InCidr(ip));
var isInRange=false;
isInRange=isIp4InCidrs(clientIp, whitelistedCidr); 
console.log("Whitelisted IP Test");
console.log(isInRange);
javascript apigee
1个回答
0
投票

该错误告诉您不支持您在此处使用的语法:

const [range, bits = 32 ] = cidr.split('/');

...因为

const [range, bits = 32]
部分是解构声明,而
= 32
部分是默认值。

显然您正在使用的工具不支持它,所以请按照老式方式进行操作:

const parts = cidr.split('/');
const range = parts[0];
const bits = parts[1] ?? 32;

或类似的。

© www.soinside.com 2019 - 2024. All rights reserved.