Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取NetSuite中的库存数量时出现未定义错误_Javascript_Netsuite - Fatal编程技术网

Javascript 获取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

我遇到的问题是,在NetSuite中执行用户事件脚本时,始终出现以下错误:

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支持更干净的设计+谢谢你的建议。