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

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',
    },
};
markasoftware
quelle
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 */
Ausnahme
quelle
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"
    },
    ...
GiorgosK
quelle
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,
  },
Frank Spin
quelle
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
binici
quelle
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.

Jose M Bel
quelle
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
Regeln in Dokumenten: Konfiguration eslint.org/docs/user-guide/configuring#configuring-rules , Regeln: eslint.org/docs/rules
Denis
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
  }
};
Benjineer
quelle
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);
Koen
quelle
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"
  ]
}
Huang Botao
quelle
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 . :) :)

rauben
quelle
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"
    },
   ...
  },
Katinka Hesselink
quelle
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.

Alessander França
quelle
4

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

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

2018 Oktober,

mach einfach:

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

die anderen antworten mit

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

funktioniert nicht !

Stackdave
quelle
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.

V. Villacis
quelle
-2

Fensterobjekt verwenden

window.console.log("..")

Kartik Bhargav
quelle