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"
};
Jean YC Yang
fuente

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',
    },
};
markasoftware
fuente
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 */
Excepción
fuente
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"
    },
    ...
GiorgosK
fuente
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,
  },
Frank Spin
fuente
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
binici
fuente
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.

Jose M Bel
fuente
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
Reglas en documentos: configuración eslint.org/docs/user-guide/configuring#configuring-rules , reglas: eslint.org/docs/rules
Denis
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
  }
};
Benjineer
fuente
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);
Koen
fuente
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"
  ]
}
huang botao
fuente
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 . :)

Robar
fuente
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"
    },
   ...
  },
Katinka Hesselink
fuente
4

Debe agregar una regla y agregar su env:

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

puedes agregar otros envs.

Alessander França
fuente
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
    }
};
Beanwa
fuente
3

2018 octubre,

solo haz:

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

los otros responden con

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

No funciona !

stackdave
fuente
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.

V.Villacis
fuente
-2

Usar objeto de ventana

window.console.log("..")

Kartik Bhargav
fuente