Angularjs 如何停止全局web文件中的jshint错误?

Angularjs 如何停止全局web文件中的jshint错误?,angularjs,protractor,Angularjs,Protractor,我有一个量角器测试脚本文件,如下所示: var TestPage = function () { this.detailsTab = element(by.id('detailsTab')); .. 它给了我很多错误,说element和by没有定义。有没有办法阻止所有这些提示错误出现?从中可以看出,这些全局变量是由Proactor创建的: 这将使用全局元素和by,它们也是由创建的 量角器 所以你需要一种方法来告诉JSHint这些全局变量。您可以在JSHint的配置中执行此操作

我有一个量角器测试脚本文件,如下所示:

var TestPage = function () {

    this.detailsTab = element(by.id('detailsTab'));
    ..
它给了我很多错误,说
element
by
没有定义。有没有办法阻止所有这些提示错误出现?

从中可以看出,这些全局变量是由Proactor创建的:

这将使用全局
元素
by
,它们也是由创建的 量角器

所以你需要一种方法来告诉JSHint这些全局变量。您可以在JSHint的配置中执行此操作。

内联配置方法

配置JSHint的方法之一是使用添加特殊的内联注释。下面是摘自JSHint文档页面的一段摘录,它描述了如何使用内联注释配置方法指定全局

globals-用于告诉JSHint已定义的全局变量的指令 在别处如果值是代码> false (默认值),JSHITN将考虑 变量为只读。将其与
undef
选项一起使用

更新:因此,对于量角器,内联配置为:

/* global element */
/* global by */
或者,正如@runTarm所建议的,这种简明语法也可以:

/* global element, by */

配置文件方法

您还可以使用配置文件配置JSHint。检查以了解指定配置文件的不同方式。从docs页面我们可以看到下面的摘录,它解释了如何编写文件来指定一个全局变量

配置文件是一个简单的JSON文件,用于指定哪个JSHint 打开或关闭的选项。例如,以下文件将启用 关于未定义和未使用变量的警告,并告诉JSHint关于 名为
MY\u global
的全局变量


下面是一个示例.jshint文件,其中删除了全局变量:

{
    "node": true,
    "browser": true,
    "esnext": true,
    "bitwise": true,
    "camelcase": true,
    "curly": true,
    "eqeqeq": true,
    "immed": true,
    "indent": 4,
    "latedef": true,
    "newcap": true,
    "noarg": true,
    "quotmark": "single",
    "undef": true,
    "unused": true,
    "strict": true,
    "trailing": true,
    "smarttabs": true,
    "multistr": true,
    "globals": {
        "after": false,
        "afterEach": false,
        "angular": false,
        "before": false,
        "beforeEach": false,
        "browser": false,
        "describe": false,
        "expect": false,
        "inject": false,
        "it": false,
        "jasmine": false,
        "spyOn": false,
        "Kinetix": false,
        "$": false
    }
}
量角器的实际.jshintrc配置 如果要消除量角器的jshint警告,更新.jshintrc是最好的方法。为每个文件添加全局覆盖相当繁琐

将以下内容添加到
.jshintrc
文件中(您应该能够在包含测试的目录中添加.jshintrc文件,而不是源代码的根/全部)

.jshintrc:

  {
   ... your other jshint stuff ...
   "jasmine": true,
   "mocha": true,
   "globals": {
     "angular": false,
     "browser": false,
     "inject": false,
     "_": false,
     "driver": false,
     "protractor": false,
     "browser": false,
     "$": false,
     "$$": false,
     "element": false,
     "by": false,
     "list": false
    }
  }
其作用:(根据您编写测试的方式,您可能不需要茉莉花/摩卡)

  • 茉莉花在
    expect
  • 摩卡咖啡在每次之前都是必需的
  • globals是量角器定义为globals的其他对象-请参阅

此问题的可能重复是关于量角器的,您应该更新标题。关于
如何删除关于量角器中有效全局变量的jshint警告
,以便澄清一下,您能否显示全局内联对量角器的要求。非常感谢您的帮助。@SamanthaJ您需要添加
/*global element*/
/*global by*/
我也更新了答案。
/*global element,by*/
也可以
{
    "node": true,
    "browser": true,
    "esnext": true,
    "bitwise": true,
    "camelcase": true,
    "curly": true,
    "eqeqeq": true,
    "immed": true,
    "indent": 4,
    "latedef": true,
    "newcap": true,
    "noarg": true,
    "quotmark": "single",
    "undef": true,
    "unused": true,
    "strict": true,
    "trailing": true,
    "smarttabs": true,
    "multistr": true,
    "globals": {
        "after": false,
        "afterEach": false,
        "angular": false,
        "before": false,
        "beforeEach": false,
        "browser": false,
        "describe": false,
        "expect": false,
        "inject": false,
        "it": false,
        "jasmine": false,
        "spyOn": false,
        "Kinetix": false,
        "$": false
    }
}
  {
   ... your other jshint stuff ...
   "jasmine": true,
   "mocha": true,
   "globals": {
     "angular": false,
     "browser": false,
     "inject": false,
     "_": false,
     "driver": false,
     "protractor": false,
     "browser": false,
     "$": false,
     "$$": false,
     "element": false,
     "by": false,
     "list": false
    }
  }