为特定对象定义或禁止WebStorm代码分析

时间:2017-09-07 23:27:03

标签: webstorm

我在使用WebStorm代码分析工具时遇到了问题。

在节点快速服务器中,我发送一个对象:

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

在Web应用程序中,我使用jQuery要求快递服务器发送回JSON对象:

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

代码运行没有错误,但我的Web应用程序的WebStorm代码分析注释器非常合理地抱怨 configSummary.siteDirs 是一个未解决的变量。我知道如何用注释来抑制编辑器中的错误,但我不喜欢这个解决方案。相反,我想教WebStorm关于 configSummary 对象或告诉它忽略客户端JavaScript文件中的“类型”。我怎么能这样做?

1 个答案:

答案 0 :(得分: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了解其他可能的解决方法。 您可以从plugins / JavaScriptLanguage / lib / JavaScriptLanguage.jar!/ com / intellij / lang / javascript / index / predefined /打开任何.js库文件,以查看存根定义的样子