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"
};

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',
    },
};

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 */

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

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,
  },

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

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.


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
  }
};

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);

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"
  ]
}

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 . :)


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

4

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

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

vous pouvez ajouter d'autres envs.


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
    }
};

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 !


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.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.