Eslint: Comment désactiver «déclaration de console inattendue» dans Node.js?

268

J'utilise eslint avec Sublime Text 3 et j'écris gulpfile.js.

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

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

Mais eslint continue d'afficher l'erreur: "Erreur: instruction de console inattendue. (Pas de console)" erreur eslint

J'ai trouvé un document officiel ici , mais je ne sais toujours pas comment le désactiver.

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

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

ne fonctionne pas non plus.

Mes plugins Sublime Text 3: SublimeLinter et SublimeLinter-contrib-eslint.

Voici mon .eslintrc.jsdossier:

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
la source

Réponses:

451

Créez un .eslintrc.js dans le répertoire de votre fichier et mettez-y le contenu suivant:

module.exports = {
    rules: {
        'no-console': 'off',
    },
};
markasoftware
la source
2
Eh bien, selon la page github officielle du plugin eslint ( github.com/roadhump/… ), mettre un fichier .eslintrc dans votre dossier de projet devrait faire l'affaire ... pour continuer à le déboguer, je vous recommande d'essayer de l'exécuter eslint à partir de la ligne de commande. Installez simplement node.js si vous ne l'avez pas installé, puis exécutez à npm install eslintpartir d'une invite de console / commande, puis accédez à votre dossier de projet dans une invite de console / commande, et exécutezeslint .
markasoftware
10
cela fonctionne (pour moi) lorsque le fichier est appelé .eslintrc.json
AlexWien
13
Alternativement, vous pouvez écrire "rules": {"no-console": "off"}pour être moins cryptique. "warn"et "error"étant les 2 autres options.
TheDarkIn1978
1
Le fichier de configuration ESLint utilisé pour être simplement .eslintrcmais maintenant qui est dépréciée et devrait être nommé selon le format utilisé, par exemple .eslintrc.js, .eslintrc.yamletc.
Colin D Bennett
4
Ne fonctionne pas dans vue-cli 3 : voir la réponse stackoverflow.com/a/53333105/150370
Latorre allemand
142

Vous devez mettre à jour le fichier de configuration eslint pour y remédier définitivement. Sinon, vous pouvez temporairement activer ou désactiver la vérification eslint pour la console comme ci-dessous

/* eslint-disable no-console */
console.log(someThing);
/* eslint-enable no-console */
Exception
la source
2
Comment configurer mon .eslintrc, dites-moi s'il vous plaît?
Jean YC Yang,
7
Il n'est pas nécessaire d'ajouter les deux lignes. Avec seulement mettre précédente de votre console.logl'exception suivante suffit: eslint-disable-next-line no-console.
Jonathan Brizio
132

Pour vue-cli 3 ouvert package.jsonet de l'article eslintConfigmis no-consolesous rulesserveur et redémarrage dev ( npm run serveou yarn serve)

...
"eslintConfig": {
    ...
    "rules": {
      "no-console": "off"
    },
    ...
GiorgosK
la source
2
Merci, car la solution @markasoftware ne fonctionne pas si vous venez ici pour un projet cue-cli.
muenalan
package.json n'est pas le seul moyen de le faire. Les fichiers de configuration séparés sont également un standard.
Michael Cole
1
Merci! Tu m'as sauvé la journée.
Ank
Merci! Règles dans les documents: configuration eslint.org/docs/user-guide/configuring#configuring-rules , règles: eslint.org/docs/rules
Denis
1
celui dans le dossier racine @MaxRocket
GiorgosK
35

Une option plus intéressante consiste à conditionner l'affichage des instructions console.log et debugger en fonction de l'environnement du nœud.

  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
la source
les messages de la console continuent d'imprimer dans l'environnement de production
Sanyam Jain
19

Ce qui suit fonctionne avec ESLint dans VSCode si vous souhaitez désactiver la règle pour une seule ligne.

Pour désactiver la ligne suivante:

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

Pour désactiver la ligne actuelle:

console.log('hello world'); // eslint-disable-line no-console
binici
la source
15

Si vous installez eslint sous votre projet local, vous devriez avoir un répertoire / node_modules / eslint / conf / et sous ce répertoire un fichier eslint.json. Vous pouvez éditer le fichier et modifier l'entrée "no-console" avec la valeur "off" (bien que la valeur 0 soit également prise en charge):

"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",
    ....

J'espère que cette "configuration" pourrait vous aider.

Jose M Bel
la source
Encore mieux, il suffit d'exécuter ce script pratique sur tous vos fichiers:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461
Règles dans les documents: configuration eslint.org/docs/user-guide/configuring#configuring-rules , règles: eslint.org/docs/rules
Denis
10

J'utilise Ember.js qui génère un fichier nommé .eslintrc.js. L'ajout "no-console": 0à l'objet de règles a fait le travail pour moi. Le fichier mis à jour ressemble à ceci:

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

Si vous ne souhaitez désactiver la règle qu'une seule fois, vous devez consulter la réponse d'Exception .

Vous pouvez améliorer cela en désactivant uniquement la règle pour une seule ligne:

... sur la ligne actuelle:

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

... ou sur la ligne suivante:

/* eslint-disable-next-line no-console */
console.log(someThing);
Koen
la source
9

dans mon vueprojet, j'ai résolu ce problème comme ceci:

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
la source
ceci est utile si l'on a généré une auge de projet vue vue-cliou vue uiet s'il contient un vue.config.jset package.json. Modifiez le package.json.
swiesend le
6

Si vous rencontrez toujours des problèmes même après avoir configuré votre package.json conformément à la documentation (si vous avez choisi d'utiliser package.json pour suivre plutôt que de séparer les fichiers de configuration):

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

Et cela ne fonctionne toujours pas pour vous, n'oubliez pas que vous devez revenir à la ligne de commande et réinstaller npm . :)

Rob
la source
5

Dans package.json vous trouverez une eslintConfigligne. Votre ligne de «règles» peut y entrer comme ceci:

  "eslintConfig": {
   ...
    "extends": [
      "eslint:recommended"
    ],
    "rules": {
      "no-console": "off"
    },
   ...
  },
Katinka Hesselink
la source
4

Vous devez ajouter une règle et ajouter votre env:

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

vous pouvez ajouter d'autres envs.

Alessander França
la source
4

Mettre cela dans le fichier .eslintrc.js qui se trouve à l'emplacement du projet a fonctionné pour moi

module.exports = {
    rules: {
        'no-console': 0
    }
};
beanwa
la source
3

Octobre 2018,

fais juste:

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

les autres répondent avec

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

ne marche pas !

stackdave
la source
0

Alternativement, au lieu de désactiver la fonction «sans console», vous pouvez autoriser. Dans le fichier .eslintrc.js , placez

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

Cela vous permettra de faire console.loget console.clearetc sans lancer d'erreurs.

V.Villacis
la source
-2

Utiliser l'objet fenêtre

window.console.log("..")

Kartik Bhargav
la source