【问题标题】:Suppress warnings for variables defined at runtime in Webstorm/IntelliJ IDEA抑制在 Webstorm/IntelliJ IDEA 中运行时定义的变量的警告
【发布时间】:2015-01-17 23:56:08
【问题描述】:

像 Webstorm 这样的 Jetbrains IDE 有一个代码检查器,当您使用未解析的变量时会向您发出警告。

Meteor 框架有一个在运行时可用的“Meteor.settings”对象。该框架会查看环境变量和/或使用您的设置加载 JSON 文件,然后让应用程序可以使用这些数据。

Jetbrains IDE 的最新版本声称支持 Meteor。尽管如此,我的 IDE 并不能理解上述所有内容,并且在我使用 Meteor.settings.foo 变量的代码中的任何地方抱怨一个未解析的变量。

抑制该警告的最佳方法是什么?

【问题讨论】:

  • 您是否将设置文件 (json) 保留在项目根目录中?
  • 我通常将流星的东西放在 src/ 目录中,并将配置文件放在 config/ 目录中。 Meteor 喜欢自动包含它在目录中找到的所有文件,有时我发现这是一个问题,所以我已经将所有流星的东西放在自己的目录中。
  • 是否有我不知道的 settings.json 约定用于开发设置或记录将在运行时使用的设置文件的一般预期结构?
  • IDE 到底抱怨什么?我也在使用 Webstorm 和 settings.json,它是一个简单的 json 键值对。顺便说一句,请查看 eventedmind.com/feed/… 以获取有关此问题的一些生产力提示
  • 这是一个很好的资源,同意。当我要求它检查我项目中的代码时,我得到了这个:“第 5 行的问题概要未解决的变量 public”。我的代码中的第 5 行是我引用文件中的公共设置之一的行。私人设置的类似故事。

标签: intellij-idea meteor webstorm


【解决方案1】:

如果 webstorm 无法解析该变量,您也可以通过在源中将其分配给自身来伪造初始化。

您可以在 Meteor.startup() 块内的 client/lib 文件夹中的某个位置执行此操作。

public = public || {};

或者如果它抱怨它的嵌套属性,你也可以这样做:

public = public || { prop1:{}, prop2: {} };

这样,webstorm 只会认为它是一个空对象,但在运行时,由于它已经初始化,你将能够使用实际值。

我知道这是一个 hack,但它会为您省去 IDE 代码检查的麻烦。

【讨论】:

    【解决方案2】:

    您可以通过添加@namespace 注释来隐藏错误,如下所示:

    /** @namespace Meteor.settings */
    Meteor.settings
    

    从这一刻起,IntelliJ 将不再提示:

    第 XXX 行未解析的变量设置

    请记住,这只是您看到通知的线路的一种解决方法。它不会解决问题的根源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多