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

Answers:


451

在文件目录中创建一个.eslintrc.js,并将以下内容放入其中:

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

2
好吧,根据eslint插件的官方github页面(github.com/roadhump/…),将.eslintrc文件放入您的项目文件夹应该可以解决问题……继续进行调试,我建议尝试运行从命令行eslint。如果尚未安装,则只需安装node.js,然后npm install eslint从控制台/命令提示符运行,然后在控制台/命令提示符下导航至项目文件夹,然后运行eslint .
markasoftware 2015年

10
当文件名为.eslintrc.json时,它(对我来说)有效
AlexWien

13
另外,您也可以写得"rules": {"no-console": "off"}不太神秘。 "warn""error"作为其他2个选项。
TheDarkIn1978 '17

1
所述ESLint配置文件用于简单地.eslintrc但现在已被废弃,应根据使用的格式来命名,例如.eslintrc.js.eslintrc.yaml
科林d贝内特

4
vue-cli 3中不起作用:请参见问题stackoverflow.com/a/53333105/150370
德国拉托雷(Latorre),

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-consolerules并重新启动开发服务器(npm run serveyarn serve

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

2
谢谢,因为如果您来这里参加cue-cli项目,则@markasoftware解决方案将不起作用。
muenalan '18

package.json不是唯一的方法。单独的配置文件也是一个标准。
Michael Cole

1
谢谢!你救了我的日子。
阿克


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

如果只想禁用规则,则以下代码可用于VSCode中的ESLint。

要禁用下一行:

// 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。您可以编辑文件并使用值“ off”修改“ no-console”条目(尽管也支持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 '17


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

如果您只想禁用一次规则,则需要查看Exception的答案

您可以通过仅禁用一行规则来改进此功能:

...在当前行上:

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-clivue 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

将其放在项目位置的.eslintrc.js文件中对我有用

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

3

2018年10月,

做就是了:

// 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没有引发错误等。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.