2015-10-14 59 views
0

我正在調試在WebStorm 10.0.4中使用typescript編寫的節點服務器,並且在單步執行代碼時,代碼執行路徑完全更改。變量賦值似乎會中斷並引用不同的(不正確的)對象並中斷我的代碼。調試時節點服務器調試器代碼行爲發生變化

我有一個類CustomerRoutes.ts它包含不同的方法來處理POST請求。我註冊端點:

app.post('/Contacts', jsonParser, CustomerRoutes.postContact); 

CustomerRoutes.postContact是被定義爲public static功能:

public static postContact(request, response) { 
    if(request.body.$type == 'Person') { 
     CustomerRoutes.postIndividual(request, response); 
    } else if(request.body.$type == 'Organization') { 
     CustomerRoutes.postOrganization(request, response); 
    } 
} 

CustomerRoutes.postIndividualCustomerRoutes.postOrganization均爲public static功能以及。因此,當服務器處於非調試模式時,代碼將按預期執行,並執行分支語句。但是逐步執行代碼時,變量CustomerRoutes全局變量被重新分配到的request內容CustomerRoutes.postContact

enter image description here

的範圍之內,你可以在變量CustomerRoutes已經被重新定義兩次調試器的變量窗口中看到到requestresponse的值。因此,逐步執行代碼和功能postIndividualpostOrganization被調用時現,CustomerRoutes不包含這些功能和POST失敗,出現異常和錯誤500

我不相信這是任何形式的種族/定時狀態,從而它必須是調試器環境中的一個錯誤。我的直覺是,打字稿變量映射不能正確使用調試器,但我不確定。有沒有人看到過這樣的問題或解決方案的想法?我從來沒有見過這樣的事情。我很高興根據要求發佈更多信息。

回答