Eslint: Jak wyłączyć „nieoczekiwaną instrukcję konsoli” w Node.js?

268

Używam eslint z Sublime Text 3 i piszę gulpfile.js.

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

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

Ale eslint ciągle wyświetla błąd: „Błąd: nieoczekiwana instrukcja konsoli. (Bez konsoli)” błąd eslint

Znalazłem tutaj oficjalny dokument , ale wciąż nie wiem, jak go wyłączyć.

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

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

też nie działa.

Wtyczki My Sublime Text 3: SublimeLinter i SublimeLinter-contrib-eslint.

Oto mój .eslintrc.jsplik:

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
źródło

Odpowiedzi:

451

Utwórz plik .eslintrc.js w katalogu swojego pliku i umieść w nim następującą zawartość:

module.exports = {
    rules: {
        'no-console': 'off',
    },
};
markasoftware
źródło
2
Cóż, zgodnie z oficjalną stroną github dla wtyczki eslint ( github.com/roadhump/… ), umieszczenie pliku .eslintrc w folderze projektu powinno załatwić sprawę ... aby kontynuować debugowanie, polecam spróbować uruchomić eslint z linii poleceń. Po prostu zainstaluj node.js, jeśli go nie masz, następnie uruchom npm install eslintkonsolę / wiersz poleceń, a następnie przejdź do folderu projektu w konsoli / eslint .
wiersz
10
działa (dla mnie), gdy plik nazywa się .eslintrc.json
AlexWien
13
Możesz też napisać "rules": {"no-console": "off"}mniej tajemniczo. "warn"i "error"pozostałe 2 opcje.
TheDarkIn1978
1
Plik konfiguracyjny ESLint kiedyś po prostu .eslintrc, ale teraz, że jest przestarzałe i powinny być nazywane zgodnie z formatu używanego, np .eslintrc.js, .eslintrc.yamlitp
Colin D Bennett
4
Nie działa w vue-cli 3 : patrz odpowiedź stackoverflow.com/a/53333105/150370
niemiecki Latorre
141

Należy zaktualizować plik konfiguracyjny eslint, aby naprawić to na stałe. W przeciwnym razie możesz tymczasowo włączyć lub wyłączyć sprawdzanie eslint dla konsoli, jak poniżej

/* eslint-disable no-console */
console.log(someThing);
/* eslint-enable no-console */
Wyjątek
źródło
2
Jak skonfigurować mój .eslintrc, proszę mi powiedzieć?
Jean YC Yang,
7
Nie jest konieczne dodawanie obu linii. Z tylko umieścić poprzedni Twojego console.lognastępującym wyjątkiem: Dosyć eslint-disable-next-line no-console.
Jonathan Brizio
132

Dla vue 3-cli otwartym package.jsoni pod sekcją eslintConfigumieścić no-consolepod rulesi restartu serwera dev ( npm run servelub yarn serve)

...
"eslintConfig": {
    ...
    "rules": {
      "no-console": "off"
    },
    ...
GiorgosK
źródło
2
Dzięki, ponieważ @markasoftware rozwiązanie nie działa, jeśli przyjedziesz tutaj po projekt cue-cli.
muenalan,
Package.json nie jest jedynym sposobem na to. Oddzielne pliki konfiguracyjne są również standardem.
Michael Cole
1
Dzięki! Uratowałeś mi dzień.
Ank
Dzięki! Reguły w dokumentacji: konfiguracja eslint.org/docs/user-guide/configuring#configuring-rules , reguły: eslint.org/docs/rules
Denis
1
ten w folderze głównym @MaxRocket
GiorgosK
35

Lepszą opcją jest uzależnienie wyświetlania instrukcji console.log i debuggera w zależności od środowiska węzła.

  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
źródło
wiadomości z konsoli nadal są drukowane w środowisku produkcyjnym
Sanyam Jain
19

Poniższe działa z ESLint w VSCode, jeśli chcesz wyłączyć regułę tylko dla jednej linii.

Aby wyłączyć następny wiersz:

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

Aby wyłączyć bieżącą linię:

console.log('hello world'); // eslint-disable-line no-console
binici
źródło
15

Jeśli instalujesz eslint w lokalnym projekcie, powinieneś mieć katalog / node_modules / eslint / conf /, a pod tym katalogiem plik eslint.json. Możesz edytować plik i zmodyfikować pozycję „bez konsoli” wartością „off” (chociaż obsługiwana jest również wartość 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",
    ....

Mam nadzieję, że ta „konfiguracja” może ci pomóc.

Jose M. Bel
źródło
Co więcej, po prostu uruchom ten przydatny skrypt na wszystkich swoich plikach:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461,
Reguły w dokumentacji: konfiguracja eslint.org/docs/user-guide/configuring#configuring-rules , reguły: eslint.org/docs/rules
Denis
10

Używam Ember.js, który generuje plik o nazwie .eslintrc.js. Dodanie "no-console": 0do obiektu reguł wykonało dla mnie pracę. Zaktualizowany plik wygląda następująco:

module.exports = {
  root: true,
  parserOptions: {
    ecmaVersion: 6,
    sourceType: 'module'
  },
  extends: 'eslint:recommended',
  env: {
    browser: true
  },
  rules: {
    "no-console": 0
  }
};
Benjineer
źródło
10

Jeśli chcesz tylko raz wyłączyć regułę, spójrz na odpowiedź wyjątku .

Możesz to poprawić, wyłączając regułę tylko dla jednej linii:

... na bieżącej linii:

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

... lub w następnym wierszu:

/* eslint-disable-next-line no-console */
console.log(someThing);
Koen
źródło
9

w moim vueprojekcie naprawiłem ten problem w następujący sposób:

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
źródło
jest to pomocne, jeśli jeden wygenerował koryto projektu Vue vue-clilub vue uizawiera vue.config.jsi package.json. Edytuj package.json.
swiesend
6

Jeśli nadal masz problemy, nawet po skonfigurowaniu pliku package.json zgodnie z dokumentacją (jeśli zdecydowałeś się użyć pliku package.json do śledzenia, a nie oddzielnych plików konfiguracji):

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

I nadal nie działa dla ciebie, nie zapomnij, że musisz wrócić do wiersza poleceń i ponownie zainstalować npm . :)

Obrabować
źródło
5

W pakiecie.json znajdziesz eslintConfiglinię. Twoja linia „reguł” może tam wyglądać następująco:

  "eslintConfig": {
   ...
    "extends": [
      "eslint:recommended"
    ],
    "rules": {
      "no-console": "off"
    },
   ...
  },
Katinka Hesselink
źródło
4

Powinieneś dodać jedną regułę i dodać swoją env:

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

możesz dodać inne env.

Alessander França
źródło
4

Udało mi się umieścić to w pliku .eslintrc.js, który znajduje się w lokalizacji projektu

module.exports = {
    rules: {
        'no-console': 0
    }
};
beanwa
źródło
3

2018 października

po prostu zrób:

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

inni odpowiadają z

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

nie działa !

stackdave
źródło
0

Zamiast tego możesz wyłączyć opcję „bez konsoli”. W pliku .eslintrc.js umieść

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

Pozwoli to zrobić console.logi console.clearetc bez rzucania błędów.

V.Villacis
źródło
-2

Użyj obiektu okna

window.console.log("..")

Kartik Bhargav
źródło