Eslint: ¿Cómo deshabilitar la "declaración de consola inesperada" en Node.js?


268

Estoy usando eslint con Sublime Text 3 y estoy escribiendo gulpfile.js.

/*eslint-env node*/
var gulp = require('gulp');

gulp.task('default', function(){
    console.log('default task');
});

Pero eslint sigue mostrando el error: "Error: declaración de consola inesperada. (Sin consola)" error de eslint

Encontré un documento oficial aquí , pero todavía no sé cómo deshabilitarlo.

/*eslint-env node*/
var gulp = require('gulp');

/*eslint no-console: 2*/
gulp.task('default', function(){
    console.log('default task');
});

tampoco funciona.

Mis complementos de Sublime Text 3: SublimeLinter y SublimeLinter-contrib-eslint.

Aquí está mi .eslintrc.jsarchivo:

module.exports = {
    "rules": {
        "no-console":0,
        "indent": [
            2,
            "tab"
        ],
        "quotes": [
            2,
            "single"
        ],
        "linebreak-style": [
            2,
            "unix"
        ],
        "semi": [
            2,
            "always"
        ]
    },
    "env": {
        "browser": true,
        "node": true
    },
    "extends": "eslint:recommended"
};

Respuestas:


451

Cree un .eslintrc.js en el directorio de su archivo y coloque los siguientes contenidos en él:

module.exports = {
    rules: {
        'no-console': 'off',
    },
};

2
Bueno, de acuerdo con la página oficial de github para el complemento eslint ( github.com/roadhump/… ), poner un archivo .eslintrc en su carpeta de proyecto debería ser el truco ... para continuar depurando, recomiendo intentar ejecutar Eslint desde la línea de comando. Simplemente instale node.js si no lo tiene instalado, luego ejecute npm install eslintdesde una consola / símbolo del sistema, luego navegue a su carpeta de proyecto en una consola / símbolo del sistema y ejecuteeslint .
markasoftware

10
funciona (para mí) cuando el archivo se llama .eslintrc.json
AlexWien

13
Alternativamente, puedes escribir "rules": {"no-console": "off"}para ser menos críptico. "warn"y "error"siendo las otras 2 opciones.
TheDarkIn1978

1
El archivo de configuración ESLint solía ser simplemente .eslintrcpero ahora que es obsoleto y debe ser nombrado de acuerdo con el formato que se utiliza, por ejemplo .eslintrc.js, .eslintrc.yaml, etc.
Colin D Bennett

44
No funciona en vue-cli 3 : consulte la respuesta stackoverflow.com/a/53333105/150370
German Latorre

142

Debe actualizar el archivo de configuración de eslint para solucionarlo permanentemente. De lo contrario, puede habilitar o deshabilitar temporalmente la comprobación de eslint para la consola como se muestra a continuación

/* eslint-disable no-console */
console.log(someThing);
/* eslint-enable no-console */

2
¿Cómo configurar mi .eslintrc, por favor dime?
Jean YC Yang

77
No es necesario agregar ambas líneas. Con sólo puso previa de su console.logla siguiente excepción es suficiente: eslint-disable-next-line no-console.
Jonathan Brizio

132

Para vue-cli 3 abierta package.jsony en la sección eslintConfigde venta no-consolebajo rulesservidor dev y reinicio ( npm run serveo yarn serve)

...
"eslintConfig": {
    ...
    "rules": {
      "no-console": "off"
    },
    ...

2
Gracias, ya que la solución @markasoftware no funciona si vienes aquí para un proyecto cue-cli.
muenalan

package.json no es la única forma de hacer esto. Los archivos de configuración separados también son estándar.
Michael Cole

1
¡Gracias! Salvaste mi día.
Ank

¡Gracias! Reglas en documentos: configuración eslint.org/docs/user-guide/configuring#configuring-rules , reglas: eslint.org/docs/rules
Denis

1
el de la carpeta raíz @MaxRocket
GiorgosK

35

Una mejor opción es hacer que la visualización de las declaraciones console.log y depurador sea condicional en función del entorno del nodo.

  rules: {
    // allow console and debugger in development
    'no-console': process.env.NODE_ENV === 'production' ? 2 : 0,
    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
  },

los mensajes de consola todavía se imprimen en el entorno de producción
Sanyam Jain

19

Lo siguiente funciona con ESLint en VSCode si desea deshabilitar la regla para una sola línea.

Para deshabilitar la siguiente línea:

// eslint-disable-next-line no-console
console.log('hello world');

Para deshabilitar la línea actual:

console.log('hello world'); // eslint-disable-line no-console

15

Si instala eslint en su proyecto local, debe tener un directorio / node_modules / eslint / conf / y debajo de ese directorio un archivo eslint.json. Puede editar el archivo y modificar la entrada "sin consola" con el valor "apagado" (aunque también se admite el valor 0):

"rules": {
    "no-alert": "off",
    "no-array-constructor": "off",
    "no-bitwise": "off",
    "no-caller": "off",
    "no-case-declarations": "error",
    "no-catch-shadow": "off",
    "no-class-assign": "error",
    "no-cond-assign": "error",
    "no-confusing-arrow": "off",
    "no-console": "off",
    ....

Espero que esta "configuración" pueda ayudarte.


Aún mejor, simplemente ejecute este útil script en todos sus archivos:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461


10

Estoy usando Ember.js que genera un archivo llamado .eslintrc.js. Agregar "no-console": 0al objeto de reglas hizo el trabajo por mí. El archivo actualizado se ve así:

module.exports = {
  root: true,
  parserOptions: {
    ecmaVersion: 6,
    sourceType: 'module'
  },
  extends: 'eslint:recommended',
  env: {
    browser: true
  },
  rules: {
    "no-console": 0
  }
};

10

Si solo desea deshabilitar la regla una vez, desea ver la respuesta de Exception .

Puede mejorar esto al deshabilitar la regla solo para una línea:

... en la línea actual:

console.log(someThing); /* eslint-disable-line no-console */

... o en la siguiente línea:

/* eslint-disable-next-line no-console */
console.log(someThing);

9

en mi vueproyecto solucioné este problema así:

vim package.json
...
"rules": {
    "no-console": "off"
},
...

ps : package.json is a configfile in the vue project dir, finally the content shown like this:

{
  "name": "metadata-front",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "axios": "^0.18.0",
    "vue": "^2.5.17",
    "vue-router": "^3.0.2"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.0.4",
    "@vue/cli-plugin-eslint": "^3.0.4",
    "@vue/cli-service": "^3.0.4",
    "babel-eslint": "^10.0.1",
    "eslint": "^5.8.0",
    "eslint-plugin-vue": "^5.0.0-0",
    "vue-template-compiler": "^2.5.17"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended"
    ],
    "rules": {
        "no-console": "off"
    },
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
}

Esto es útil si uno generó un canal de proyecto vue vue-clio vue uiy contiene un vue.config.jsy package.json. Edite el package.json.
swiesend

6

Si todavía tiene problemas incluso después de configurar su package.json de acuerdo con la documentación (si ha optado por usar package.json para rastrear en lugar de separar los archivos de configuración):

"rules": {
      "no-console": "off"
    },

Y todavía no funciona para ti, no olvides que debes volver a la línea de comando y volver a instalar npm . :)


5

En package.json encontrarás una eslintConfiglínea. Su línea de 'reglas' puede entrar así:

  "eslintConfig": {
   ...
    "extends": [
      "eslint:recommended"
    ],
    "rules": {
      "no-console": "off"
    },
   ...
  },

4

Debe agregar una regla y agregar su env:

{
  "rules": {
    "no-console": "off"
  },
  "env": {
    "browser": true
  }
}

puedes agregar otros envs.


4

Poner esto en el archivo .eslintrc.js que está en la ubicación del proyecto funcionó para mí

module.exports = {
    rules: {
        'no-console': 0
    }
};

3

2018 octubre,

solo haz:

// tslint:disable-next-line:no-console

los otros responden con

// eslint-disable-next-line no-console

No funciona !


0

Alternativamente, en lugar de desactivar 'sin consola', puede permitir. En el archivo .eslintrc.js pon

  rules: {
    'no-console': [
      'warn',
      { allow: ['clear', 'info', 'error', 'dir', 'trace', 'log'] }
    ]
  }

Esto le permitirá hacer console.logy console.clearetc. sin lanzar errores.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.