Eslint: Como desativar a "declaração inesperada do console" no Node.js.


268

Estou usando o eslint com o Sublime Text 3 e estou escrevendo gulpfile.js.

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

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

Mas o eslint continua mostrando o erro: "Erro: declaração inesperada do console. (Sem console)" erro de exclusão

Encontrei documento oficial aqui , mas ainda não sei como desabilitá-lo.

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

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

também não funciona.

Meus plugins Sublime Text 3: SublimeLinter e SublimeLinter-contrib-eslint.

Aqui está o meu .eslintrc.jsarquivo:

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

Respostas:


451

Crie um .eslintrc.js no diretório do seu arquivo e coloque o seguinte conteúdo:

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

2
Bem, de acordo com a página oficial do github para o plugin eslint ( github.com/roadhump/… ), colocar um arquivo .eslintrc na pasta do projeto deve fazer o truque ... para continuar a depuração, recomendo tentar executar eslint a partir da linha de comando. Basta instalar node.js se você não tiver instalado, em seguida, executar npm install eslinta partir de um console / Prompt de Comando em seguida, navegue para a pasta de projeto em um console / prompt de comando, e correreslint .
markasoftware

10
ele funciona (para mim) quando o arquivo é chamado .eslintrc.json
AlexWien

13
Como alternativa, você pode escrever "rules": {"no-console": "off"}para ser menos enigmático. "warn"e "error"sendo as outras 2 opções.
TheDarkIn1978

1
O arquivo de configuração ESLint costumava ser simplesmente .eslintrcmas agora que está obsoleta e deve ser nomeado de acordo com o formato utilizado, por exemplo .eslintrc.js, .eslintrc.yaml, etc.
Colin D Bennett

4
Não funciona no vue-cli 3 : consulte a resposta stackoverflow.com/a/53333105/150370
German Latorre

142

Você deve atualizar o arquivo de configuração eslint para corrigir isso permanentemente. Caso contrário, você pode ativar ou desativar temporariamente a verificação eslint para o console, como abaixo

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

2
Como configurar o meu .eslintrc, por favor me diga?
Jean YC Yang

7
Não é necessário adicionar as duas linhas. Com apenas colocar anterior do seu console.loga seguinte exceção é suficiente: eslint-disable-next-line no-console.
Jonathan Brizio

132

Para o vue-cli 3, abra package.jsone abaixo da seção, eslintConfigcoloque no-consolesob rulese reinicie o servidor dev ( npm run serveou yarn serve)

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

2
Obrigado, pois a solução @markasoftware não funciona se você vier aqui para um projeto cue-cli.
muenalan

O package.json não é a única maneira de fazer isso. Arquivos de configuração separados também são um padrão.
Michael Cole

1
Obrigado! Você salvou o meu dia.
Ank

Obrigado! Regras nos documentos: configuração eslint.org/docs/user-guide/configuring#configuring-rules , regras: eslint.org/docs/rules
Denis

1
o da pasta raiz @MaxRocket
GiorgosK em 23/01

35

Uma opção mais agradável é condicionar a exibição das instruções console.log e depurador com base no ambiente do nó.

  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 de console ainda imprimem no ambiente de produção
Sanyam Jain

19

A seguir, funciona com o ESLint no VSCode, se você deseja desativar a regra para apenas uma linha.

Para desativar a próxima linha:

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

Para desativar a linha atual:

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

15

Se você instalar o eslint no seu projeto local, deverá ter um diretório / node_modules / eslint / conf / e, nesse diretório, um arquivo eslint.json. Você pode editar o arquivo e modificar a entrada "no-console" com o valor "off" (embora o valor 0 também seja suportado):

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

Espero que essa "configuração" possa ajudá-lo.


Melhor ainda, basta executar este script útil em todos os seus arquivos:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461


10

Estou usando o Ember.js, que gera um arquivo chamado .eslintrc.js. A adição "no-console": 0ao objeto de regras fez o trabalho para mim. O arquivo atualizado é assim:

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

10

Se você deseja desativar a regra apenas uma vez, consulte a resposta da exceção .

Você pode melhorar isso desativando a regra apenas para uma linha:

... na linha atual:

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

... ou na próxima linha:

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

9

no meu vueprojeto, corrigi esse problema da seguinte maneira:

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

isso é útil se alguém gerou um projeto vue através de vue-cliou vue uie contém um vue.config.jse package.json. Edite o package.json.
swiesend

6

Se você ainda estiver tendo problemas, mesmo depois de configurar o package.json de acordo com a documentação (se você optou por usar o package.json para rastrear, em vez de separar os arquivos de configuração):

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

E ainda não está funcionando para você, não se esqueça de voltar à linha de comando e instalar o npm novamente . :)


5

No package.json você encontrará uma eslintConfiglinha. Sua linha de 'regras' pode entrar assim:

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

4

Você deve adicionar uma regra e adicionar seu env:

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

você pode adicionar outros envs.


4

Colocar isso no arquivo .eslintrc.js que está no local do projeto funcionou para mim

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

3

2018 outubro,

apenas faça:

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

os outros respondem com

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

não funciona !


0

Como alternativa, em vez de desativar o 'sem console', você pode permitir. No arquivo .eslintrc.js, coloque

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

Isso permitirá que você faça console.loge console.clearetc sem gerar erros.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.