Eslint: Làm thế nào để vô hiệu hóa tuyên bố bảng điều khiển không mong đợi của người dùng trong Node.js?


268

Tôi đang sử dụng eslint với Sublime Text 3 và tôi đang viết gulpfile.js.

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

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

Nhưng eslint tiếp tục hiển thị lỗi: "Lỗi: Tuyên bố bảng điều khiển không mong muốn. (Không có bàn điều khiển)" lỗi eslint

Tôi đã tìm thấy tài liệu chính thức ở đây , nhưng tôi vẫn không biết cách vô hiệu hóa nó.

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

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

cũng không hoạt động.

Plugin 3 Sublime Text của tôi: SublimeLinter và SublimeLinter-contrib-eslint.

Đây là .eslintrc.jstập tin của tôi :

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

Câu trả lời:


451

Tạo một .eslintrc.js trong thư mục tệp của bạn và đặt các nội dung sau vào đó:

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

2
Chà, theo trang github chính thức cho plugin eslint ( github.com/roadhump/ mẹo ), việc đặt tệp .eslintrc vào thư mục dự án của bạn nên thực hiện thủ thuật ... để tiếp tục gỡ lỗi, tôi khuyên bạn nên thử chạy eslint từ dòng lệnh. Đơn giản chỉ cần cài đặt node.js nếu bạn chưa cài đặt nó, sau đó chạy npm install eslinttừ dấu nhắc bàn điều khiển / lệnh, sau đó điều hướng đến thư mục dự án của bạn trong dấu nhắc bàn điều khiển / lệnh và chạyeslint .
markasoftware

10
nó hoạt động (đối với tôi) khi tệp được gọi là .eslintrc.json
AlexWien

13
Ngoài ra, bạn có thể viết "rules": {"no-console": "off"}để ít khó hiểu hơn. "warn""error"là 2 lựa chọn khác.
TheDarkIn1978

1
Các tập tin cấu hình ESLint từng là đơn giản .eslintrcnhưng bây giờ mà bị phản đối và cần được đặt tên theo dạng được sử dụng, ví dụ như .eslintrc.js, .eslintrc.yamlvv
Colin D Bennett

4
Không hoạt động trong vue-cli 3 : xem câu trả lời stackoverflow.com/a/53333105/150370
Latorre của Đức

142

Bạn nên cập nhật tập tin cấu hình eslint để sửa lỗi này vĩnh viễn. Khác, bạn có thể tạm thời bật hoặc tắt kiểm tra eslint cho bảng điều khiển như bên dưới

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

2
Làm thế nào để cấu hình của tôi .eslintrc, xin vui lòng cho tôi biết?
Jean YC Yang

7
Không cần thiết phải thêm cả hai dòng. Chỉ cần đặt trước console.logngoại lệ sau của bạn là đủ : eslint-disable-next-line no-console.
Jonathan Brizio

132

Đối với vue-cli 3 mở package.jsonvà dưới phần eslintConfigđặt no-consolebên dưới rulesvà khởi động lại máy chủ dev ( npm run servehoặc yarn serve)

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

2
Cảm ơn, vì giải pháp @markasoftware không hoạt động nếu bạn đến đây cho một dự án cue-cli.
muenalan

pack.json không phải là cách duy nhất để làm điều này. Các tập tin cấu hình riêng biệt cũng là một standar.
Michael Cole

1
Cảm ơn! Bạn đã cứu ngày của tôi.
Ank

Cảm ơn! Các quy tắc trong tài liệu: cấu hình eslint.org/docs/user-guide/configuring#configuring-rules , quy tắc: eslint.org/docs/rules
Denis

1
một trong thư mục gốc @MaxRocket
GiorgosK

35

Một tùy chọn đẹp hơn là hiển thị các câu lệnh console.log và debugger có điều kiện dựa trên môi trường nút.

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

thông điệp trên bảng điều khiển vẫn được in trong môi trường sản xuất
Sanyam Jain

19

Phần sau đây hoạt động với ESLint trong VSCode nếu bạn muốn tắt quy tắc cho chỉ một dòng.

Để tắt dòng tiếp theo:

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

Để vô hiệu hóa dòng hiện tại:

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

15

Nếu bạn cài đặt eslint trong dự án cục bộ của mình, bạn nên có một thư mục / node_modules / eslint / conf / và trong thư mục đó một tệp eslint.json. Bạn có thể chỉnh sửa tệp và sửa đổi mục nhập "không có bàn điều khiển" với giá trị "tắt" (mặc dù giá trị 0 cũng được hỗ trợ):

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

Tôi hy vọng "cấu hình" này có thể giúp bạn.


Thậm chí tốt hơn, chỉ cần chạy tập lệnh tiện dụng này trên tất cả các tệp của bạn:find . -name '*.js' -exec gawk -i inplace 'NR==1{print "/* eslint-disable */"} {print}' {} \;
user234461

Các quy tắc trong tài liệu: cấu hình eslint.org/docs/user-guide/configuring#configuring-rules , quy tắc: eslint.org/docs/rules
Denis

10

Tôi đang sử dụng Ember.js để tạo một tệp có tên .eslintrc.js. Thêm "no-console": 0vào các đối tượng quy tắc đã làm công việc cho tôi. Các tập tin cập nhật trông như thế này:

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

10

Nếu bạn chỉ muốn tắt quy tắc một lần, bạn muốn xem câu trả lời của Exception .

Bạn có thể cải thiện điều này bằng cách chỉ vô hiệu hóa quy tắc cho một dòng duy nhất:

... Trên dòng hiện tại:

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

... hoặc trên dòng tiếp theo:

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

9

trong vuedự án của tôi, tôi đã khắc phục vấn đề này như thế này:

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

điều này rất hữu ích nếu người ta tạo ra một máng dự án vue vue-clihoặc vue uinó chứa một vue.config.jspackage.json. Chỉnh sửa package.json.
swiesend

6

Nếu bạn vẫn gặp sự cố ngay cả sau khi định cấu hình gói.json theo tài liệu (nếu bạn đã chọn sử dụng gói.json để theo dõi thay vì các tệp cấu hình riêng biệt):

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

Và nó vẫn không hoạt động cho bạn, đừng quên bạn cần quay lại dòng lệnh và cài đặt lại npm . :)


5

Trong gói.json, bạn sẽ tìm thấy một eslintConfigdòng. Dòng 'quy tắc' của bạn có thể đi vào đó như thế này:

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

4

Bạn nên thêm một quy tắc và thêm env của bạn:

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

bạn có thể thêm các env khác.


4

Đưa cái này vào tệp .eslintrc.js ở vị trí dự án làm việc cho tôi

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

3

2018 tháng 10 năm

cứ làm đi:

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

các bà mẹ trả lời với

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

không hoạt động !


0

Ngoài ra, thay vì tắt 'no-console', bạn có thể cho phép. Trong tệp .eslintrc.js đặt

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

Điều này sẽ cho phép bạn làm console.logconsole.clearvv mà không ném lỗi.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.