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 продолжает показывать ошибку: «Ошибка: неожиданный оператор консоли. (Без консоли)» ошибка Elsint

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

/*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"
};
Жан Ю. Ян
источник

Ответы:

452

Создайте файл .eslintrc.js в каталоге вашего файла и поместите в него следующее содержимое:

module.exports = {
    rules: {
        'no-console': 'off',
    },
};
markasoftware
источник
2
Что ж, согласно официальной странице github для плагина eslint ( github.com/roadhump/… ), размещение файла .eslintrc в папке вашего проекта должно помочь ... чтобы продолжить отладку, я бы порекомендовал попробовать запустить если из командной строки. Просто установите node.js, если он у вас не установлен, затем запустите npm install eslintиз консоли / командной строки, затем перейдите к папке вашего проекта в консоли / командной строке и запуститеeslint .
markasoftware
10
это работает (для меня), когда файл называется .eslintrc.json
AlexWien
13
Кроме того, вы можете написать, "rules": {"no-console": "off"}чтобы быть менее загадочным. "warn"и "error"быть другими 2 вариантами.
TheDarkIn1978
1
Файл конфигурации ESLint раньше был простым, .eslintrcно теперь устарел и должен называться в соответствии с используемым форматом, например .eslintrc.js, .eslintrc.yamlи т. Д.
Colin D Bennett
4
Не работает в vue-cli 3 : см. Ответ stackoverflow.com/a/53333105/150370
Немецкий Latorre
142

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

/* eslint-disable no-console */
console.log(someThing);
/* eslint-enable no-console */
исключение
источник
2
Как настроить мой .eslintrc, подскажите пожалуйста?
Жан Ян Ян
7
Не нужно добавлять обе строки. С только положить предыдущие ваше console.logследующее исключение достаточно: eslint-disable-next-line no-console.
Джонатан Бризио,
132

Для вю-кли 3 открытых package.jsonи в соответствии с разделом eslintConfigположить no-consoleпод rulesи рестарта сервера Dev ( npm run serveили yarn serve)

...
"eslintConfig": {
    ...
    "rules": {
      "no-console": "off"
    },
    ...
GiorgosK
источник
2
Спасибо, поскольку решение @markasoftware не работает, если вы приехали сюда для проекта cue-cli.
muenalan
package.json - не единственный способ сделать это. Отдельные файлы конфигурации также являются стандартом.
Майкл Коул
1
Спасибо! Ты спас мой день.
Ank
Спасибо! Правила в документации: конфигурация 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,
  },
Фрэнк Спин
источник
консольные сообщения все еще печатаются в производственной среде
Sanyam Jain
19

Следующее работает с ESLint в VSCode, если вы хотите отключить правило только для одной строки.

Чтобы отключить следующую строку:

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

Чтобы отключить текущую строку:

console.log('hello world'); // eslint-disable-line no-console
binici
источник
15

Если вы устанавливаете eslint в своем локальном проекте, у вас должен быть каталог / node_modules / eslint / conf / и в этом каталоге файл eslint.json. Вы можете отредактировать файл и изменить запись «no-console» со значением «off» (хотя также поддерживается значение 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
  }
};
Benjineer
источник
10

Если вы просто хотите отключить правило один раз, вы должны посмотреть на ответ Exception .

Вы можете улучшить это, отключив правило только для одной строки:

... в текущей строке:

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

... или на следующей строке:

/* eslint-disable-next-line no-console */
console.log(someThing);
Koen
источник
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 install . :)

обкрадывать
источник
5

В package.json вы найдете eslintConfigстроку. Ваша строка «правил» может идти так:

  "eslintConfig": {
   ...
    "extends": [
      "eslint:recommended"
    ],
    "rules": {
      "no-console": "off"
    },
   ...
  },
Катинка Хесселинк
источник
4

Вы должны добавить одно правило и добавить свой env:

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

Вы можете добавить другие envs.

Алессандр Франса
источник
4

Поместив это в файл .eslintrc.js, который находится в месте расположения проекта, работал для меня

module.exports = {
    rules: {
        'no-console': 0
    }
};
beanwa
источник
3

2018 октябрь,

просто сделать:

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

другие отвечают

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

не работает !

stackdave
источник
0

В качестве альтернативы, вместо отключения «без консоли», вы можете разрешить. В файл .eslintrc.js положить

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

Это позволит вам делать console.logи console.clearт. Д., Не выбрасывая ошибок.

V.Villacis
источник
-2

Использовать объект Window

window.console.log("..")

Картик Бхаргав
источник