当前位置: 首页 > 面试题库 >

ESLint的“ no-undef”规则将我对Underscore的使用称为未定义变量

屠瑞
2023-03-14
问题内容

我正在使用Grunt作为构建工具,并使用ESLint作为正在处理的应用程序的整理工具。我也在使用Underscore
Node程序包,并在我的应用程序中使用了它。不幸的是,当我在代码上运行ESLint时,它认为_是以下行中的未定义变量:

return _.pluck(objects, nameColumn);

这是它给我的错误:

78:21 error "_" is not defined no-undef

我宁愿不对ESLint禁用no-undef规则,并且尝试安装Underscore插件,但仍然收到此错误。如果有人对如何解决这个问题有任何想法,我将不胜感激!

如果有任何其他我想提供的信息可以帮助任何人帮助我解决这个问题,请告诉我!


问题答案:

在官方文件应该给你如何解决这个问题的想法。

最简单的解决方法是添加

/* global _ */

在文件的顶部。

但是由于您必须为每个新的js文件执行此操作,因此它可能会令人讨厌。如果您经常使用下划线,建议您将全局变量添加到.eslintrc文件中,例如:

{
    "globals": {
        "_": false
    }
}

并将其另存为.eslintrc项目根目录或用户主目录(可选)。虽然有人说不建议使用后者,但有时可能很方便,但是您必须记住您已经在这里了:)

上面规则的解释"_": false意味着名为的变量_告诉eslint该变量是全局定义的,并且不会no- undef对该变量发出任何错误。正如@sebastian所指出的,false意味着该变量不能被覆盖,因此代码_ = 'something else'将产生错误no-global-assign。如果要改用"_": true(这是我以前的回答),则意味着可以重新分配该值,并且不会发生前面提到的错误。

但是请记住,只有在直接分配给全局变量的情况下才会发生这种情况,如我在示例中所示。您仍然可以对其进行阴影处理,并保持沉默。例如,这些代码片段不会产生no- global-assign

const _ = 'haha I broke your _'

或作为函数参数名称,例如

function (_) {
  console.log(_, 'might not be the _ you were looking for') 
}


 类似资料:
  • 我在一个.js文件中得到了这段代码,我正在通过ESLint运行它。但是它抛出了一个关于这行的错误:)。 说明:。 如果我这样定义它: 我的代码不再工作,我如何让ESLint高兴并保持代码工作? 我想知道如何在不禁用特定行的错误报告的情况下满足ESLint。

  • 我一直在温习我未定义的行为规则,并阅读了以下内容: 未定义的行为和序列点 为什么f(i=-1,i=-1)行为未定义 为什么`x-- 在C 11中,“i = i 1”是否表现出未定义的行为? 最后有三个问题: < li >形式为< code>i=i 的术语的未定义行为规则是否适用于非整型?(表达式应翻译为< code > I . operator(I . operator(I)),由于每个函数调用都

  • 问题内容: 为了在JSHint中关闭特定行的掉毛规则,我们使用以下规则: 我一直在尝试找到与以上相同的内容。 问题答案: 您现在可以使用单行语法: 或者,如果您不想在与实际代码相同的行上添加注释,则可以禁用下一行:

  • 为了关闭JSHint中特定行的林分规则,我们使用以下规则: 我一直在尝试为Eslint找到与上述相同的产品。

  • 我安装了,并在我的eslint配置文件中这样设置: 我一直收到这样的错误消息:

  • 是否可以关闭整个文件的eslint规则?某事,如: (类似于eslint-disable-line。)我经常遇到这样的情况,在某个文件中,我在许多地方违反了特定的规则,这对该文件来说是可以的,但我不想为整个项目禁用该规则,也不想为该特定文件禁用其他规则。