Eslint: Wie deaktiviere ich "unerwartete Konsolenanweisung" in Node.js?


268

Ich verwende eslint mit Sublime Text 3 und schreibe gulpfile.js.

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

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

Aber eslint zeigt weiterhin den Fehler an: "Fehler: Unerwartete Konsolenanweisung. (Keine Konsole)" Eslint-Fehler

Ich habe hier ein offizielles Dokument gefunden , weiß aber immer noch nicht, wie ich es deaktivieren soll.

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

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

funktioniert auch nicht.

Meine Sublime Text 3-Plugins: SublimeLinter und SublimeLinter-Contrib-Eslint.

Hier ist meine .eslintrc.jsDatei:

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

Antworten:


451

Erstellen Sie eine .eslintrc.js im Verzeichnis Ihrer Datei und fügen Sie den folgenden Inhalt ein:

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

2
Nun, laut der offiziellen Github-Seite für das Eslint-Plugin ( github.com/roadhump/… ) sollte das Einfügen einer .eslintrc-Datei in Ihren Projektordner den Trick tun ... um das Debuggen fortzusetzen, würde ich empfehlen, zu versuchen, es auszuführen Eslint von der Kommandozeile. Installieren Sie einfach node.js, wenn Sie es nicht installiert haben, führen Sie es npm install eslintan einer Konsole / Eingabeaufforderung aus, navigieren Sie dann in einer Konsole / Eingabeaufforderung zu Ihrem Projektordner und führen Sieeslint .
markasoftware

10
es funktioniert (für mich), wenn die Datei .eslintrc.json
AlexWien

13
Alternativ können Sie schreiben "rules": {"no-console": "off"}, um weniger kryptisch zu sein. "warn"und "error"die anderen 2 Optionen zu sein.
TheDarkIn1978

1
Die ESLint Konfigurationsdatei verwendet werden einfach .eslintrcaber jetzt , dass ist veraltet und sollte entsprechend dem Format verwendet benannt werden, zB .eslintrc.js, .eslintrc.yamlusw.
Colin D Bennett

4
Funktioniert nicht in vue-cli 3 : siehe Antwort stackoverflow.com/a/53333105/150370
Deutscher Latorre

141

Sie sollten die eslint-Konfigurationsdatei aktualisieren, um dies dauerhaft zu beheben. Andernfalls können Sie die Eslint-Prüfung für die Konsole wie unten beschrieben vorübergehend aktivieren oder deaktivieren

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

2
Wie konfiguriere ich meine .eslintrc, bitte sag es mir?
Jean YC Yang

7
Es ist nicht erforderlich, beide Zeilen hinzuzufügen. Wenn Sie nur die vorherige console.logAusnahme setzen, reicht die folgende Ausnahme aus : eslint-disable-next-line no-console.
Jonathan Brizio

132

Für vue-cli 3 offen package.jsonund unter Abschnitt eslintConfigPut no-consoleunter rulesund Neustart dev - Server ( npm run serveoder yarn serve)

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

2
Vielen Dank, da die @ markasoftware-Lösung nicht funktioniert, wenn Sie für ein Cue-Cli-Projekt hierher kommen.
Muenalan

package.json ist nicht der einzige Weg, dies zu tun. Separate Konfigurationsdateien sind ebenfalls ein Standard.
Michael Cole

1
Vielen Dank! Du hast meinen Tag gerettet.
Ank

Vielen Dank! Regeln in Dokumenten: Konfiguration eslint.org/docs/user-guide/configuring#configuring-rules , Regeln: eslint.org/docs/rules
Denis

1
die im Stammordner @MaxRocket
GiorgosK

35

Eine schönere Option besteht darin, die Anzeige von console.log- und Debugger-Anweisungen basierend auf der Knotenumgebung abhängig zu machen.

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

Konsolenmeldungen werden weiterhin in der Produktionsumgebung gedruckt
Sanyam Jain

19

Das Folgende funktioniert mit ESLint in VSCode, wenn Sie die Regel für nur eine Zeile deaktivieren möchten.

So deaktivieren Sie die nächste Zeile:

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

So deaktivieren Sie die aktuelle Zeile:

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

15

Wenn Sie eslint unter Ihrem lokalen Projekt installieren, sollten Sie ein Verzeichnis / node_modules / eslint / conf / und unter diesem Verzeichnis eine Datei eslint.json haben. Sie können die Datei bearbeiten und den Eintrag "no-console" mit dem Wert "off" ändern (obwohl auch der Wert 0 unterstützt wird):

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

Ich hoffe diese "Konfiguration" konnte Ihnen helfen.


Noch besser, führen Sie einfach dieses praktische Skript für alle Ihre Dateien aus:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461


10

Ich verwende Ember.js, das eine Datei mit dem Namen generiert .eslintrc.js. Das Hinzufügen "no-console": 0zum Regelobjekt hat die Arbeit für mich erledigt. Die aktualisierte Datei sieht folgendermaßen aus:

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

10

Wenn Sie die Regel nur einmal deaktivieren möchten, sollten Sie sich die Antwort von Exception ansehen .

Sie können dies verbessern, indem Sie die Regel nur für eine Zeile deaktivieren:

... in der aktuellen Zeile:

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

... oder in der nächsten Zeile:

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

9

In meinem vueProjekt habe ich dieses Problem folgendermaßen behoben:

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

Dies ist hilfreich, wenn ein Vue-Projekt durch vue-clioder generiert wurde vue uiund es ein vue.config.jsund enthält package.json. Bearbeiten Sie die package.json.
Swiesend

6

Wenn Sie auch nach der Konfiguration Ihrer package.json gemäß der Dokumentation weiterhin Probleme haben (wenn Sie sich entschieden haben, package.json zum Verfolgen und nicht zum Trennen separater Konfigurationsdateien zu verwenden):

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

Und es funktioniert immer noch nicht für Sie. Vergessen Sie nicht, dass Sie zur Befehlszeile zurückkehren und die npm-Installation erneut durchführen müssen . :) :)


5

In package.json finden Sie eine eslintConfigZeile. Ihre 'Regel'-Zeile kann dort wie folgt eingefügt werden:

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

4

Sie sollten eine Regel hinzufügen und Ihre Umgebung hinzufügen:

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

Sie können andere Envs hinzufügen.


4

Das Einfügen in die .eslintrc.js-Datei am Projektspeicherort hat für mich funktioniert

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

3

2018 Oktober,

mach einfach:

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

die anderen antworten mit

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

funktioniert nicht !


0

Alternativ können Sie zulassen, anstatt "keine Konsole" auszuschalten. In die Datei .eslintrc.js einfügen

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

Dies ermöglicht es Ihnen zu tun console.logund console.clearetc ohne Fehler zu werfen.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.