Javascript 获取NetSuite中的库存数量时出现未定义错误
我遇到的问题是,在NetSuite中执行用户事件脚本时,始终出现以下错误:Javascript 获取NetSuite中的库存数量时出现未定义错误,javascript,netsuite,Javascript,Netsuite,我遇到的问题是,在NetSuite中执行用户事件脚本时,始终出现以下错误: TypeError: Cannot read property "amazon" from undefined NetSuite使用Javascript在客户端和服务器端执行业务逻辑。对于没有NetSuite经验的用户,将在服务器上执行用户事件脚本 我可以分享的代码如下: var qtyAvail = 0; qtyAvail = rec.getValue('locationquantityavailable'); i
TypeError: Cannot read property "amazon" from undefined
NetSuite使用Javascript在客户端和服务器端执行业务逻辑。对于没有NetSuite经验的用户,将在服务器上执行用户事件脚本
我可以分享的代码如下:
var qtyAvail = 0;
qtyAvail = rec.getValue('locationquantityavailable');
if(!qtyAvail || qtyAvail === 'undefined' || qtyAvail === null || isNaN(qtyAvail) || typeof qtyAvail === "undefined"){
qtyAvail = 0;
}
location = rec.getValue(kColumns[3]);
if(location == 7 ||location == 16 ||location == 20 ||location == 3 ||location == 19 ||location == 1 ||location == 27 ||location == 27){
if(location == 7){
fba = qtyAvail;
if(!fba){
qtyAvail = 0;
}
}
...more business code here....
return {
amazon: fba,
ups: upsName
}
我调用的返回值如下:
var itemQty = getLocationQty(item);
if(itemQty.amazon){
var fbaStock = itemQty.amazon;
} else { fbaStock = 0;}
这段代码对我的一些位置很有效,但如果特定位置没有可用数量,它将返回未定义,而不是像我预期的那样将qtyAvail设置为0
我是否缺少检查未定义的任何地方的比较,或者其他人是否发现代码有任何问题 从您包含的代码段来看,您似乎没有初始化fba的值 添加
var fba=0代码>在开始处,并查看是否修复了它
或者,您可能想将qtyAvail分配给amazon,而不是fba。从您共享的代码位和原始描述来看,您从函数返回的对象文本似乎没有实际返回。”amazon'是该对象的一个属性,并且由于错误表示它未定义,因此该函数没有返回任何内容
在JS引擎中运行以下代码:
function foo()
{
return;
}
alert( foo().amazon );
你会看到:
TypeError:无法读取未定义的属性“amazon”
我看到你找到了一个解决方案,但我不知道它与你报告的原始问题有什么关系。我错过什么了吗
同样,虽然不是你问题的一部分,但我想我可能会提到另一种写位置检查的方法,更容易阅读:
var acceptedLocations = [ 7, 16, 20, 3, 19, 1, 27 ];
if(acceptedLocations.indexOf(location) > 0)
{
// Do rad stuff
}
我已将fba初始化为0,但运气不佳。我将qtyAvail指定给fba,就像我返回时返回的关联数组一样,我可以从函数外部拉出对象。奇怪的是,代码在某些记录上运行良好,而在未定义的情况下,其他记录将失败。记录的并排比较显示,出现故障的fba位置中存在值。还有其他想法吗?我将考虑重写我的函数,但我宁愿不去避免它:“是的,我找到了我的悲伤来源:KIT项目导致了失败,所以我写了一个函数,它删除了项目名称的KIT部分,并返回了主SKU。由于更改似乎起了作用-我目前正在运行一批200个销售订单,以查看其性能。感谢Steve,我的解决方案在某些情况下继续失败,导致我重新编写代码,有趣的是,我使用indexOf支持更干净的设计+谢谢你的建议。