Eslint:如何在Node.js中禁用“意外的控制台语句”?

时间:2015-12-11 03:15:28

标签: javascript node.js sublimetext3 sublime-text-plugin eslint

我正在使用与Sublime Text 3的eslint,我正在写gulpfile.js

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

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

但是eslint一直显示错误:“错误:意外的控制台声明。(无控制台)” eslint error

我找到了official document here,但我仍然不知道如何禁用它。

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

18 个答案:

答案 0 :(得分:340)

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

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

答案 1 :(得分:93)

您应该更新eslint配置文件以永久修复此问题。否则,您可以暂时启用或禁用以下控制台的夹板检查

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

答案 2 :(得分:31)

对于 vue-cli 3 ,打开package.json,并在eslintConfig部分下,将no-console放在rules下,然后重新启动开发服务器({{1} }或npm run serve

yarn serve

答案 3 :(得分:22)

一个更好的选择是根据节点环境显示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,
  },

答案 4 :(得分:12)

如果在本地项目下安装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",
    ....

我希望这种“配置”可以帮到你。

答案 5 :(得分:7)

我使用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
  }
};

答案 6 :(得分:7)

如果您只想禁用一次规则,则需要查看Exception's answer

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

...在当前行:

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

...或在下一行:

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

答案 7 :(得分:5)

如果您只想禁用规则,则以下内容可与VSCode中的ESLint配合使用。

要禁用下一行:

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

要禁用当前行:

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

答案 8 :(得分:3)

在我的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"
  ]
}

答案 9 :(得分:3)

您也可以允许关闭而不是关闭“无控制台”功能。在 .eslintrc.js 文件中

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

这将使您可以进行console.logconsole.clear等操作,而不会抛出错误。

答案 10 :(得分:2)

如果即使根据文档配置了package.json(如果您选择使用package.json来跟踪而不是单独的配置文件)后仍然遇到问题,

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

它仍然对您不起作用,别忘了您需要返回命令行并再次进行npm安装。 :)

答案 11 :(得分:1)

您应该添加一条规则并添加环境:

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

您可以添加其他环境。

答案 12 :(得分:1)

package.json 中,您会找到一条eslintConfig行。您的“规则”行可以像这样进入那里:

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

答案 13 :(得分:0)

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

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

答案 14 :(得分:0)

在“规则”中, “无控制台”:[false,“ log”,“ error”]

答案 15 :(得分:0)

我的2美分贡献:

除了,除了删除控制台警告(如上所示)外,最好从PROD环境中删除日志(出于安全原因)。 我发现这样做的最好方法是将其添加到 nuxt.config.js

  build: {
   terser: {
      terserOptions: {
        compress: {
          //this removes console.log from production environment
          drop_console: true
        }
      }
    }
  }

工作原理:Nuxt已经使用terser作为缩小器。此配置将强制Terser在压缩过程中忽略/删除所有控制台日志命令。

答案 16 :(得分:-1)

2018年10月,

只需:

calculateRandomCenter(lat, lng, radius) {
    let random = Math.random()
    let a = random * 2 * Math.PI
    let r = radius * Math.sqrt(random) / 120000 // this value is approximate

    let nLat = r * Math.cos(a) + lat
    let nLng = r * Math.sin(a) + lng

    return {lat: nLat, lng: nLng}
}

别人的回答

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

不起作用!

答案 17 :(得分:-2)

使用窗口对象

"baseUrl": "./", "paths": { "@fs/*": ["src/*"], "@test/*": ["test/*"] },