如何告诉JSLint / JSHint已经定义了什么全局变量


79

在我的项目中,我们有一些用作容器的全局变量:

MyProject.MyFreature.someFunction = function() { ... }

因此,然后我在整个网站上使用该脚本,JSLint / JSHint对此表示抱怨:

未定义“ MyProject”

我知道我可以转到每个JavaScript文件并在其/*global MyProject*/顶部添加注释。但是我正在寻找一种在某种配置文件中定义该注释的方法,因此我不必逐个文件添加该注释。

中的某种选择config/jshint.yml会很好。


您正在使用Web应用程序(例如jshint.com)还是在node上运行它们?
RobH

我过去经常用rake作为任务运行。实际上,我正在使用jshint_on_rails
Emiliano Zilocchi 2013年

这就解释了我从未听说过的“ config / jshint.yml”文件。
RobH

Answers:


81

对于JSHint,您可以使用以下命令创建.jshintrc项目目录

{
  "globals": { "MyProject": true }
}

2
谢谢。但是由于我使用的是jshint_on_rails,所以我可以设置以下选项:predef
Emiliano Zilocchi 2013年

您应该在问题中提到:)
Epeli 2013年

你说得对,我错过了那部分。下次我会记住的。谢谢
Emiliano Zilocchi

11
只是有关此false用途的小注意事项:放置类似angular和的库$。但是,请true为您想重新定义自己的全局变量提供此功能myApp
polyclick 2014年

57

这仅适用于全球

/* global MyProject */

在您的情况下,您需要

/* exported MyProject */

1
如果您正在使用一个JavaScript文件,这是一个很好的答案,谢谢!

4

JSLint在其中的选项下方有一个文本区域predefine global variables here。只需在运行检查之前在其中添加变量名即可。

JSHint不允许您添加全局变量,但是您可以取消选中该When variable is undefined选项以禁止显示该警告。

如果您将JSHint库作为库运行,则它也具有用于全局变量的参数。。。此处的详细信息:http : //jshint.com/docs/


听起来好像他们没有使用Web界面-But I'm looking a way to define that comment in some sort of config file so I don't have to go file by file adding this comment.Some kind on option in the config/jshint.yml would be nice
Ian

1
我刚刚在config / jshint.yml下找到了'predef'属性。这是一个逗号分隔的属性。谢谢!
Emiliano Zilocchi 2013年

1
还值得一提的predef 是JSLint
鲁芬

给定具有Web Essentials的Visual Studio 2013以及解决方案文件夹和项目子文件夹的常规层次结构,您可以将其放在解决方案根文件夹中。
乔治

不当的降票。这个问题直到离开这个答案后才明确表明正在使用Rails。+1
superluminary
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.