Eslint: Come disabilitare "istruzione console imprevista" in Node.js?


268

Sto usando eslint con Sublime Text 3 e sto scrivendo gulpfile.js.

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

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

Ma eslint continua a mostrare l'errore: "Errore: istruzione console imprevista. (No-console)" errore eslint

Ho trovato qui un documento ufficiale , ma non so ancora come disabilitarlo.

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

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

non funziona neanche.

Plugin My Sublime Text 3: SublimeLinter e SublimeLinter-contrib-eslint.

Ecco il mio .eslintrc.jsfile:

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

Risposte:


451

Crea un .eslintrc.js nella directory del tuo file e inserisci il seguente contenuto:

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

2
Bene, secondo la pagina ufficiale di github per il plugin eslint ( github.com/roadhump/… ), inserire un file .eslintrc nella cartella del tuo progetto dovrebbe fare il trucco ... per continuare il debug, ti consiglio di provare a eseguire esci dalla riga di comando. Installa semplicemente node.js se non lo hai installato, quindi esegui npm install eslintda una console / prompt dei comandi, quindi vai alla cartella del progetto in una console / prompt dei comandi ed eseguieslint .
markasoftware l'

10
funziona (per me) quando il file si chiama .eslintrc.json
AlexWien

13
In alternativa, puoi scrivere "rules": {"no-console": "off"}per essere meno criptico. "warn"ed "error"essendo le altre 2 opzioni.
TheDarkIn1978,

1
Il file di configurazione ESLint era semplicemente .eslintrcma ora è obsoleto e dovrebbe essere nominato in base al formato utilizzato, ad es .eslintrc.js. .eslintrc.yaml, Ecc.
Colin D Bennett,

4
Non funziona in vue-cli 3 : vedi risposta stackoverflow.com/a/53333105/150370
Latorre tedesco,

142

È necessario aggiornare il file di configurazione eslint per risolvere il problema in modo permanente. Altrimenti puoi abilitare o disabilitare temporaneamente il controllo eslint per la console come di seguito

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

2
Come configurare il mio .eslintrc, per favore dimmelo?
Jean YC Yang,

7
Non è necessario aggiungere entrambe le righe. Con solo mettere precedente del console.logla seguente eccezione è sufficiente: eslint-disable-next-line no-console.
Jonathan Brizio,

132

Per vue-cli 3 aprire package.jsone sotto la sezione eslintConfigmettere no-consolesotto rulese riavviare dev server ( npm run serveo yarn serve)

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

2
Grazie, poiché la soluzione @markasoftware non funziona se vieni qui per un progetto cue-cli.
muenalan,

package.json non è l'unico modo per farlo. Anche i file di configurazione separati sono standard.
Michael Cole,

1
Grazie! Mi hai salvato la giornata.
Ank

Grazie! Regole nei documenti: configurazione eslint.org/docs/user-guide/configuring#configuring-rules , regole: eslint.org/docs/rules
Denis

1
quello nella cartella principale @MaxRocket
GiorgosK il

35

Un'opzione migliore è rendere condizionale la visualizzazione delle istruzioni console.log e debugger in base all'ambiente 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,
  },

i msg console continuano a essere stampati nell'ambiente di produzione
Sanyam Jain,

19

Quanto segue funziona con ESLint in VSCode se si desidera disabilitare la regola per una sola riga.

Per disabilitare la riga successiva:

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

Per disabilitare la linea corrente:

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

15

Se installi eslint sotto il tuo progetto locale, dovresti avere una directory / node_modules / eslint / conf / e sotto quella directory un file eslint.json. È possibile modificare il file e la voce "no-console" con il valore "off" (anche se è supportato anche il valore 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",
    ....

Spero che questa "configurazione" possa aiutarti.


Ancora meglio, basta eseguire questo utile script su tutti i tuoi file:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461


10

Sto usando Ember.js che genera un file chiamato .eslintrc.js. L'aggiunta "no-console": 0all'oggetto regole ha fatto il lavoro per me. Il file aggiornato è simile al seguente:

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

10

Se vuoi solo disabilitare la regola una volta, vuoi dare un'occhiata alla risposta di eccezione .

Puoi migliorarlo disabilitando la regola solo per una riga:

... sulla riga corrente:

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

... o nella riga successiva:

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

9

nel mio vueprogetto ho risolto questo problema in questo modo:

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

questo è utile se uno ha generato un trogolo progetto vue vue-clio vue uie contiene un vue.config.jse package.json. Modifica il package.json.
Swiesend,

6

Se i problemi persistono anche dopo aver configurato package.json in base alla documentazione (se hai scelto di utilizzare package.json per tracciare anziché separare i file di configurazione):

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

E ancora non funziona per te, non dimenticare che è necessario tornare alla riga di comando e ripetere l'installazione di npm . :)


5

In package.json troverai una eslintConfigriga. La tua linea delle "regole" può entrare in questo modo:

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

4

Devi aggiungere una regola e aggiungere il tuo env:

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

puoi aggiungere altri envs.


4

Metterlo nel file .eslintrc.js che si trova nella posizione del progetto ha funzionato per me

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

3

Ottobre 2018,

basta fare:

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

gli anothers rispondono con

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

non funziona !


0

In alternativa, invece di disattivare "no-console", è possibile consentire. Nel file .eslintrc.js mettere

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

Questo vi permetterà di fare console.loge console.clearecc senza gettare errori.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.