【问题标题】:jshint error : Redefinition of '_'jshint 错误:重新定义“_”
【发布时间】:2015-08-04 21:30:32
【问题描述】:

我在我的 express 应用程序中使用 lodash 库。 每当我包含 lodash 时:

var _ = require('lodash')

jshint 报错:

Redefinition of '_' 

如果我删除 require 语句,应用程序将失败并报告它无法识别“_”。

我的jshint.rc有如下语句:

 "globals": {
    "angular": false,
    "_" : false
  }

但这是为了让我可以将它包含在前端代码中而不会抱怨 jshint。

如何让 jshint 在我的节点代码中忽略此错误?

【问题讨论】:

  • in node _ 是一个保留字(它是最后一条指令评估的值)
  • Juhana 的评论帮助解决了问题。基本上在文件顶部添加了以下内容 /* jshint -W079 */
  • @Juhana 我相信你,但如果我记得在 REPL 中是这样的话。我错了吗(只是为了不要再犯错)?
  • @Dario REPL 可以为所欲为。但仅仅因为他们将最后一个返回值分配给该变量,这并不能使其成为保留字。

标签: javascript jshint


【解决方案1】:

您已明确告诉 jshint 全局变量 _只读

来自the docs

全局变量

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

/* 全局变量 MY_LIB: false */

由于您使用require 明确定义它,我认为您可以 从 JSHint 的 globals 列表中删除 _ 以允许分配给变量。

但是,如果您使用 _ 而不明确要求它并希望它出现在环境中,那么您可以在您的 .jshintrc 中设置 "_" : true 以仍然允许分配给它。

【讨论】:

    【解决方案2】:

    在您的 jshint.rc 中,您可以输入:"no-native-reassign" : 0,这将禁用本机重新分配规则,或者您可以将 /*jshint -W079 */ 放在您分配 _ 的函数之前。

    当您不使用 _ 作为全局变量时,您还应该将其从 jshint 中的全局变量中删除。或者将其设置为 true,这样 jshint 就不会将其视为只读。

    来源:JSLint Error explanation

    【讨论】:

      猜你喜欢
      • 2014-08-22
      • 2013-09-07
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多