Eslint: Як відключити "несподіваний консольний оператор" в Node.js?


268

Я використовую eslint з Sublime Text 3 і пишу gulpfile.js.

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

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

Але eslint постійно показує помилку: "Помилка: несподіваний консольний оператор. (Без консолі)" помилка eslint

Тут я знайшов офіційний документ , але досі не знаю, як його відключити.

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

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

теж не працює.

Мої плагіни Sublime Text 3: SublimeLinter та SublimeLinter-contrib-eslint.

Ось мій .eslintrc.jsфайл:

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

Відповіді:


451

Створіть .eslintrc.js в каталозі вашого файлу і вставте в нього такий вміст:

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

2
Що ж, згідно з офіційною сторінкою github для плагіна eslint ( github.com/roadhump/… ), додавання .eslintrc-файлу у папку проекту повинно зробити трюк ... щоб продовжувати налагодження, я рекомендую спробувати запустити eslint з командного рядка. Просто встановіть node.js, якщо у вас його не встановлено, запустіть npm install eslintіз консолі / командного рядка, потім перейдіть до папки проекту в консольному / командному рядку та запустітьeslint .
markasoftware

10
він працює (для мене), коли файл називається .eslintrc.json
AlexWien

13
Крім того, ви можете написати "rules": {"no-console": "off"}менш крикливим. "warn"та "error"будучи іншими двома варіантами.
TheDarkIn1978

1
Файл конфігурації ESLint використовується , щоб бути просто , .eslintrcале тепер є застарілим і має бути названий в відповідно до формату , який використовується, наприклад .eslintrc.js, .eslintrc.yamlі т.д.
Colin D Bennett

4
Не працює в vue-cli 3 : дивіться відповідь stackoverflow.com/a/53333105/150370
Німецький

141

Вам слід оновити конфігураційний файл eslint, щоб остаточно це виправити. Крім того, ви можете тимчасово включити або вимкнути перевірку eslint для консолі, як показано нижче

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

2
Як налаштувати .eslintrc, будь ласка, скажіть?
Jean YC Yang

7
Не потрібно додавати обидва рядки. З тільки покласти попередні ваше console.logнаступне виняток досить: eslint-disable-next-line no-console.
Джонатан Брізіо

132

Для vue-cli 3 відкрити package.jsonта під розділ eslintConfigпоставити no-consoleпід rulesта перезапустити сервер розробників ( npm run serveабо yarn serve)

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

2
Дякуємо, як рішення @markasoftware не працює, якщо ви завітаєте сюди за проектом cue-cli.
muenalan

package.json - не єдиний спосіб зробити це. Окремі конфігураційні файли також є стандартом.
Майкл Коул

1
Дякую! Ти врятував мені день.
Анк

Дякую! Правила в документах: конфігурація eslint.org/docs/user-guide/configuring#configuring-rules , правила: eslint.org/docs/rules
Денис

1
той у кореневій папці @MaxRocket
GiorgosK

35

Більш приємним варіантом є умовне відображення операторів console.log та налагоджувача залежно від середовища вузла.

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

консолі msgs досі друкують у виробничих умовах
Саням Джайн

19

Далі працює з ESLint у VSCode, якщо ви хочете відключити правило лише для одного рядка.

Щоб вимкнути наступний рядок:

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

Щоб вимкнути поточний рядок:

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

15

Якщо ви встановлюєте eslint під своїм локальним проектом, у вас повинен бути каталог / node_modules / eslint / conf /, а під цим каталогом - файл eslint.json. Ви можете редагувати файл і змінювати запис "без консолі" зі значенням "вимкнено" (хоча значення 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",
    ....

Я сподіваюся, що ця "конфігурація" може вам допомогти.


Ще краще, просто запустіть цей зручний сценарій на всіх своїх файлах:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461

Правила в документах: конфігурація eslint.org/docs/user-guide/configuring#configuring-rules , правила: eslint.org/docs/rules
Денис

10

Я використовую Ember.js, який генерує файл з назвою .eslintrc.js. Додавання "no-console": 0до об'єкта правил зробило мені роботу. Оновлений файл виглядає приблизно так:

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

10

Якщо ви хочете один раз відключити правило, ви хочете переглянути відповідь на виняток .

Ви можете покращити це, відключивши правило лише для одного рядка:

... на поточному рядку:

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

... або в наступному рядку:

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

9

у своєму vueпроекті я вирішив цю проблему так:

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

це корисно, якщо один генерував проект vue vue-cliабо vue uiвін містить vue.config.jsі package.json. Відредагуйте package.json.
swiesend

6

Якщо у вас все ще виникають проблеми навіть після налаштування пакета package.json відповідно до документації (якщо ви вирішили використовувати package.json для відстеження, а не окремих файлів конфігурації):

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

І це все ще не працює для вас, не забувайте, що вам потрібно повернутися до командного рядка і знову встановити npm . :)


5

У package.json ви знайдете eslintConfigрядок. Ваш рядок "правила" може входити туди так:

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

4

Ви повинні додати одне правило та додати свою env:

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

Ви можете додати інші переліки.


4

Помістивши це у файл .eslintrc.js, який знаходиться у місці розташування проекту, працював для мене

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

3

2018 жовтня,

просто роби:

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

відповіді інших з

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

не працює !


0

Крім того, замість вимкнення "без консолі" ви можете дозволити. У файл .eslintrc.js поставити

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

Це дозволить вам робити console.logі console.clearт. Д., Не кидаючи помилок.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.