2017-09-07 66 views
0

我在WebStorm代碼分析工具中遇到問題。定義或禁止特定對象的WebStorm代碼分析

在節點Express服務器我發送對象:

var configSummary = { 
    'siteDirs': siteDirs, 
    etc... 
}; 
res.status(200).send(configSummary); 

在一個Web應用程序使用jQuery問Express服務器發回一個JSON對象:

$.getJSON('/makers/config', function(configSummary) { 
    configSummary.siteDirs.forEach(etc... 
}) 

代碼運行沒有錯誤,但我的Web應用程序的WebStorm代碼分析註釋器相當合理地抱怨configSummary.siteDirs是一個未解決的變量。我知道如何在編輯器中通過評論壓制錯誤,但我不喜歡這種解決方案。相反,我想教WebStorm關於configSummary對象或告訴它忽略客戶端JavaScript文件中的「類型」。我怎樣才能做到這一點?

回答

2

在實際數據只在運行時知道的情況下(例如,當數據是通過ajax調用設置的值時),它在靜態分析過程中無法重新解析,從而導致錯誤。

對於特定的錯誤類型,不可能抑制分析 - 只能使用註釋將其限制爲語句。但是你可以讓IDE知道你的數據是什麼樣的。 可能使用的解決方案JSDoc註釋:

/** 
* @typedef {Object} configSummary 
* @property {Object} siteDirs 
    */ 
... 

$.getJSON('/makers/config', function (/** configSummary */ configSummary) { 
    configSummary.siteDirs.forEach(...) 
}) 

https://youtrack.jetbrains.com/issue/WEB-17419#comment=27-1058451http://devnet.jetbrains.com/message/5504337#5504337看到其他可能的解決方法。 您可以從插件/ JavaScriptLanguage/lib/JavaScriptLanguage.jar!/ com/intellij/lang/javascript/index/predefined /中打開任何.js庫文件,以查看哪些存根定義看起來像