tur*_*ner 66 javascript underscore.js angularjs gruntjs eslint
我正在使用Grunt作为我的构建工具和ESLint作为我正在处理的应用程序的linting工具.我也在使用Underscore节点包,并在我的应用程序中使用它.不幸的是,当我在我的代码上运行ESLint时,它认为_是以下行中的未定义变量:
return _.pluck(objects, nameColumn);
这是它给我的错误:
78:21 error "_" is not defined no-undef
我不想禁用ESLint的no-undef规则,我尝试安装Underscore插件,但我仍然收到此错误.如果其他人有任何想法尝试这个,我会非常感激!
如果有任何进一步的信息,我可以帮助任何人帮助我解决这个问题,请告诉我!
Mar*_*šak 173
在官方文件应该给你如何解决这个问题的想法.
最简单的解决方法是添加
/* global _ */
Run Code Online (Sandbox Code Playgroud)
在您的文件的顶部.
但是因为你必须为每个新的js文件做这件事,所以它会变得烦人.如果您经常使用下划线,我建议您将全局变量添加到您的.eslintrc文件中,例如:
{
"globals": {
"_": false
}
}
Run Code Online (Sandbox Code Playgroud)
并将其保存为.eslintrc项目根目录,或者可选择保存在用户主目录中.虽然有人说后者不推荐,但它有时候很方便,但你必须记住你有它:)
上述规则的解释:"_": false表示名为变量的变量_告诉eslint该变量是全局定义的,它不会no-undef为此变量发出任何错误.正如@sebastian指出的那样,false意味着变量无法被覆盖,因此代码_ = 'something else'会产生错误no-global-assign.如果您改为使用"_": true(这是我以前的答案),这意味着可以重新分配该值,并且不会发生前面提到的错误.
但请记住,只有直接分配给我在示例中显示的全局变量时才会发生这种情况.你仍然可以遮蔽它,而且eslint不会说什么.例如,这些片段不会产生no-global-assign:
const _ = 'haha I broke your _'
Run Code Online (Sandbox Code Playgroud)
或者作为函数参数名称,例如
function (_) {
console.log(_, 'might not be the _ you were looking for')
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45024 次 |
| 最近记录: |