如何使用JSHint和RequireJS禁用警告“define未定义”

109
我在项目中使用RequireJS AMD。当我对项目运行jshint时,它会抛出如下错误:

在AMD脚本中

 'define' is not defined.

在 Mocha 测试用例中

 'describe' is not defined.
 'it' is not defined.
如何在 jshint 中消除此警告?
8个回答

187

稍微扩展一下,这里是一个适用于 Mocha 的 .jshintrc 设置:

{
  ....
  "globals"   : {
    /* MOCHA */
    "describe"   : false,
    "it"         : false,
    "before"     : false,
    "beforeEach" : false,
    "after"      : false,
    "afterEach"  : false
  }
}

来自 JSHint 文档 - false(默认值)表示该变量只读。

如果你只为特定文件定义全局变量,可以这样做:

/*global describe, it, before, beforeEach, after, afterEach */

42
我们可以在 2.5.1+ 版本中使用 {"mocha": true}。详情请见 https://github.com/jshint/jshint/issues/1330。 - gwokae
@bendytree 你知道我是否可以将这些规则添加到某些文件/文件夹而不是全局吗? - Gobliins
@Gobliins Bohdan的上面的评论。将该行添加为您的mocha测试文件的第一行,它将仅强制执行该文件的规则。 - Isaac

18
jshint: {
  options: {
    mocha: true,
  }
}

是你想要的。


12
为了避免 jshint 报出 JavaScript 中的 "not defined" 警告,请添加注释,例如:
/*global describe:true*/

选项


8

在你的.jshintrc中添加以下内容:

"predef" : ["define"]   // Custom globals for requirejs

19
predef 已被弃用,请使用 globals。 - Jonathan
@JonathanAzulay 我在 http://jshint.com/docs/options/#predef 没有找到任何弃用说明。我认为 Global 可以用于自定义全局 JavaScript,例如 angular、$、jQuery 等,而 predef 可以用于隐式全局对象,如 window、document、console 等。 - Amitesh

6

虽然来晚了,但是在你的jshintrc中使用这个选项:

"dojo": true

而你将能够安心地休息,不再收到红色警告...

6
如果您正在使用Node.js,可以在文件开头添加以下两行代码:
/*jslint node: true */
"use strict";

这个问题是关于 JSHint 的。 - PointedEars

3

JSHint GitHub示例中:"unused" : true, // true: Require all defined variables be used - Laoujin
4
那不是同一件事。 - Paul Grime

1
如果你像我一样想在WebStorm中使用Mocha运行JSHint,请按照以下步骤操作:
进入WebStorm > 首选项 > 语言和框架 > JavaScript > 代码质量工具 > JSHint
向下滚动到"环境",确保已选择复选框以启用"Mocha",这将为你设置JSHint的Mocha定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接