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

Posted

技术标签:

【中文标题】如何告诉 JSLint / JSHint 已经定义了哪些全局变量【英文标题】:How to tell JSLint / JSHint what global variables are already defined 【发布时间】:2013-07-16 14:07:39 【问题描述】:

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

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

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

'MyProject' 未定义

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

config/jshint.yml 中的一些选项会很好。

【问题讨论】:

您是在使用 Web 应用程序(例如 jshint.com)还是使用 node 运行它们? 我使用 rake 作为任务运行。实际上我正在使用 jshint_on_rails 这解释了我没听说过的 'config/jshint.yml' 文件。 【参考方案1】:

对于 JSHint,您可以在您的项目目录中创建 .jshintrc


  "globals":  "MyProject": true 

【讨论】:

谢谢。但是由于我使用的是 jshint_on_rails,所以我可以设置这个选项:predef: 'MyProject' on config/jshint.yml 你应该在你的问题中提到这一点:) 你说得对,我错过了那部分。下次我会记住的。谢谢 只是一个关于使用这个的小提示:将false 用于angular$ 等库。但是把它放在true 上,用于你想要重新定义自己的全局变量,比如myApp【参考方案2】:

这仅适用于全局

/* global MyProject */

你需要

/* exported MyProject */

【讨论】:

如果您使用的是一个 JavaScript 文件,这是一个很好的答案,谢谢!【参考方案3】:

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

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

JSHint 库也有全局参数,如果你将它作为库运行的话。 . .详情在这里:http://jshint.com/docs/

【讨论】:

听起来他们不是在使用网络界面 - 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 我刚刚找到了,config/jshint.yml下的'predef'属性。这是一个逗号分隔的属性。谢谢! 值得一提的是predefexists in JSLint too。 鉴于带有 Web Essentials 的 Visual Studio 2013 以及解决方案文件夹和项目子文件夹的常规层次结构,您可以将其放在解决方案根文件夹中。 不当投票。直到留下这个答案之后,这个问题才清楚地表明正在使用 Rails。 +1

以上是关于如何告诉 JSLint / JSHint 已经定义了哪些全局变量的主要内容,如果未能解决你的问题,请参考以下文章

jslint 和 jshint 的区别? [复制]

syntastic - 显示 jslint 和 jshint 错误

抑制 JSHint / JSLint 或替代服务中的“混合空格和制表符”警告?

如何正确解决这个 JSHint “可能的严格违规”

代码检查工具jshint和csslint

代码检查工具jshint和csslint