2012-04-19 28 views
0

我遇到的问题是NetSuite的执行用户事件脚本时,我一直收到以下错误越来越库存数量时:未定义的错误在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。

我错过了检查undefined任何地方的比较,或没有其他人看到任何代码问题吗?

回答

1

从你包含的代码片段看起来你并没有初始化fba的值。

在开始时添加var fba=0;,看看是否可以修复它。

或者你也许打算把qtyAvail分配给亚马逊而不是fba。

+0

我FBA初始化为0,没有运气。我将qtyAvail分配给fba,因为当我做我的返回时我正在返回一个关联数组,我可以将这些对象从函数外部拉出。 奇怪的是,代码可以在一些记录上正常工作,而其他人则会因未定义而失败。记录的并排比较显示值出现在失败的fba位置。任何其他想法? 我即将考虑重写我的功能,但我宁愿不,如果我可以避免它:) – 2012-04-20 12:58:47

+1

你有没有尝试在netsuite调试器中运行你的代码? – Craig 2012-04-20 15:33:35

+0

是的,我有 - 我发现我的悲伤的来源:套件物品导致失败,所以我写了一个函数,放弃物品名称的套件部分并返回主sku。由于改变似乎正在工作 - 我目前正在运行一批200个销售订单,以查看它的执行情况。 – 2012-04-20 15:56:19

1

从您确实共享的代码位和您的原始描述中,您看起来像从函数返回的对象字面值实际上并未返回。 'amazon'是该对象的一个​​属性,并且由于该错误表示它未定义,所以该函数不返回任何内容。

在JS引擎运行下面的代码:

function foo() 
{ 
    return; 
} 

alert(foo().amazon); 

,你会看到:

TypeError: Cannot read property 'amazon' of undefined

我看到你找到了解决办法,我只是不明白它是如何与您报告的原始问题。我错过了什么吗?

此外,但我想我可能会提到的另一种方法来写你的位置签到你的问题不属于,轻松一点阅读:

var acceptedLocations = [ 7, 16, 20, 3, 19, 1, 27 ]; 
if(acceptedLocations.indexOf(location) > 0) 
{ 
    // Do rad stuff 
} 
+0

谢谢史蒂夫,在某些情况下,我的解决方案继续失败,导致我重新编写代码,有趣的是,我使用indexOf来支持更清晰的设计。为您的建议+1,谢谢。 – 2012-04-27 10:32:53