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


108

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

在AMD脚本中

 'define' is not defined.

在Mocha测试用例中

 'describe' is not defined.
 'it' is not defined.

如何在jshint中删除此警告?

Answers:


187

为了进一步扩展,.jshintrc以下是Mocha 的设置:

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

JSHint Docs-false(缺省值)表示变量是只读的。

如果仅为特定文件定义全局变量,则可以执行以下操作:

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

41
我们可以使用{"mocha": true} 2.5.1+ github.com/jshint/jshint/issues/1330
gwokae 2014年

@bendytree您知道我是否可以为不是全局的某些文件/文件夹添加这些规则吗?
Gobliins

@Gobliins Bohdan的评论。添加该行作为您的摩卡测试文件的第一行,它将仅对该文件执行规则
Isaac



8

将此添加到您的.jshintrc中

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

不知道为什么有人反对这个。我正好在我的项目中使用它,并且比其他答案和作品更干净。
Shital Shah 2014年

19
predef被弃用,请使用全局变量
Jonathan Azulay

@JonathanAzulay我在jshint.com/docs/options/#predef上没有发现任何弃用说明。我认为Global可以用于自定义Global JavaScript,例如angular,$,jQuery等,并且predef可以用于隐式全局对象,例如窗口,文档,控制台等
Amitesh




1

如果您正尝试使用Mocha在WebStorm中运行JSHint,请进入:

WebStorm>首选项>语言和框架> JavaScript>代码质量工具> JSHint

向下滚动到“ Environments”,并确保选中了启用“ Mocha”的复选框,这将为您设置JSHint for Mocha的定义。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.