javascript angularjs gruntjs underscore.js eslint

javascript - La regla "no-undef" de ESLint llama a mi uso de subrayado una variable indefinida



angularjs gruntjs (2)

La documentación oficial debería darle una idea sobre cómo solucionar esto.

La solución más fácil sería agregar

/* global _ */

en la parte superior de tu archivo.

Pero como tendrá que hacer eso para cada nuevo archivo js, ​​puede ser molesto. Si usa subrayado a menudo, le sugiero que agregue globales a su archivo .eslintrc , por ejemplo:

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

Y guarde esto como .eslintrc en la raíz de su proyecto, u opcionalmente en su directorio de inicio de usuario. Aunque algunos dicen que este último no se recomienda, a veces puede ser conveniente, pero debes recordar que lo tienes allí :)

Explicación de la regla anterior : "_": false significa que una variable llamada _ le dice a eslint que esta variable está definida globalmente y que no emitirá ningún error no-undef para esta variable. Como señaló @sebastian, false significa que la variable no se puede sobrescribir, por lo que el código _ = ''something else'' generaría un error no-global-assign . Si en su lugar usara "_": true (esta fue mi respuesta anterior), esto significa que el valor puede reasignarse y no se producirá el error mencionado anteriormente.

Pero tenga en cuenta que esto solo sucederá si asigna directamente a la variable global como he mostrado en el ejemplo. Todavía puedes seguirlo y eslint no dirá nada. Por ejemplo, estos fragmentos no generarían la no-global-assign :

const _ = ''haha I broke your _''

o como nombre de argumento de función, por ejemplo

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

Estoy usando Grunt como mi herramienta de compilación y ESLint como mi herramienta de enlace para una aplicación en la que estoy trabajando. También estoy usando el paquete Underscore Node, y lo he usado en mi aplicación. Desafortunadamente, cuando ejecuto ESLint en mi código, cree que _ es una variable indefinida en la siguiente línea:

return _.pluck(objects, nameColumn);

Este es el error que me está dando:

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

Preferiría no deshabilitar la regla no undef para ESLint, e intenté instalar el complemento Underscore, pero aún recibo este error. Si alguien más tiene alguna idea sobre qué probar con esto, ¡lo agradecería mucho!

Si hay más información que pueda dar que ayude a alguien a ayudarme a resolver esto, ¡solo hágamelo saber!


Si está utilizando jest para realizar pruebas, en su entorno, en eslintrc.json

"env":{ "jest":true }