2012-04-19 29 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