tslint cho biết các lệnh gọi đến console.log không được phép - Làm cách nào để cho phép điều này?


101

Tôi vừa mới bắt đầu sử dụng ứng dụng tạo-phản ứng với chữ viết

create-react-app my-app --scripts-version=react-scripts-ts

và cấu hình tslint.json mặc định không cho phép console.log ().

Làm cách nào để tôi (hiện tại) bật console.log?

Tài liệu cho việc này có tại https://palantir.github.io/tslint/rules/no-console/ . Nhưng họ không nói nơi đặt dòng này:

    "no-console": [true, "log", "error"]

Tôi đã tìm kiếm và tìm thấy cú pháp tệp cấu hình tslint.json này , vì vậy tôi đã thử điều này:

"rules": {
    "no-console": [true, "warning"]
}

Trong một nỗ lực để có được các thông báo nhật ký chỉ là cảnh báo. Nhưng điều đó đã không thành công.

Tôi đã nhận xét về một vài dòng console.log () mà tôi có nhưng tôi sẽ muốn có thể làm điều này trong tương lai.

Câu trả lời:


198

Thêm // tslint:disable-next-line:no-consolevào dòng ngay trước khi bạn gọi đếnconsole.log để ngăn thông báo lỗi chỉ một lần.

Nếu bạn muốn vô hiệu hóa hoàn toàn quy tắc, hãy thêm phần sau vào của bạn tslint.json(rất có thể trong thư mục gốc của bạn):

{
    "rules": {
        "no-console": false
    }
}

6
Tôi không chắc điều gì đã xảy ra nhưng hiện tại "no-console": false không hoạt động với tôi. Tôi đã tìm thấy một công việc xung quanh là đặt // tslint:disable:no-consoleở đầu tệp.
PatS

10
"no-console": false hoạt động với tôi, nhưng tôi phải khởi động lại "npm start" để nó có hiệu lực.
jlb

2
"no-console": falsekhông hiệu quả với tôi, ngay cả với npm run start.
Eric Fulmer

18
@EricFulmer đặt điều đó vào nút "jsRules". "jsRules": {"no-console": false},
billb

Tôi đã thêm quy tắc vào jsRulesvà làm mới yarn starttrước khi lỗi biến mất. Không chắc ai trong số đó đã làm điều đó.
Byron Wall

27

Đối với những người trong số các bạn đến đây với cơ sở mã hỗn hợp của javascript và typecript.

Bạn có thể cần xác định tùy chọn 'no-console' trong jsRules, đối tượng quy tắc jslints cho các tệp javascript, tức là có các đối tượng quy tắc riêng biệt cho javascript và typecript.

//tslint.json

{
  "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"], //Example... 
  "rules": {
    "no-console": false //Disable for typescript
  },
  "jsRules": {
    "no-console": false //Disable for javascript
  }
}

nhưng - mục đích của thứ này là gì?
roberto tomás

Của jsRules, hay không có bảng điều khiển?
Lee Brindley

no-console - có vẻ như (tôi đã tìm kiếm) nó chỉ để cảnh báo bạn rằng các thông báo console không thuộc mã sản xuất. Đó là kinda làm cho nó một quy luật đáng ngờ bất cứ lúc nào env của bạn không phải là sản
roberto Tomás

Tôi thấy quan điểm của bạn, ở một mức độ. Một điều cần xem xét là bảng điều khiển không phải là một phần của ngôn ngữ javascript, nó thường được triển khai trong các công cụ javascript, đó là điểm mặc dù - nó không phải là một phần của ngôn ngữ javascript, bạn đang đưa sự phụ thuộc vào mã của bạn có thể tồn tại hoặc không. . Với điều đó đã nói, tôi có thể thấy một cách sử dụng cho quy tắc này.
Lee Brindley

@ robertotomás, Quy tắc này dựa trên phương pháp hay nhất là không có thông báo console.log trong mã của bạn. Mã sản xuất không nên có điều này, vì vậy điều này cho bạn biết sản phẩm của bạn chưa sẵn sàng. Bạn có thể có hai cấu hình tslint, một cấu hình cho phép và cấu hình khác không cho phép. Tôi có một logger.infohàm gọi console.log(vì vậy một trình bao bọc) cho phép tôi dễ dàng bật hoặc tắt ghi nhật ký cho toàn bộ ứng dụng. Tôi không nói đây là phương pháp hay nhất, chỉ là điều tôi đã làm. Nó cũng giúp bạn dễ dàng tích hợp với một trình ghi nhật ký khác như github.com/krakenjs/beaver-logger .
PatS

8

Thêm phần sau vào của bạn tslint.json

{
   "rules": {
      "no-console": {
         "severity": "warning",
      } 
   }
}

6

Đây là cú pháp chính xác để xác định quy tắc no-console (hoặc bất kỳ quy tắc nào khác cho vấn đề đó) nhưng chỉ với một cảnh báo chứ không phải là một lỗi (rõ ràng là thay đổi các tùy chọn thành bất cứ điều gì bạn muốn)

"no-console": {
    "severity": "warning",
    "options": [
        "log",
        "error",
        "debug",
        "info",
        "time",
        "timeEnd",
        "trace"
    ]
},

Điều này hoạt động hoàn hảo như cảnh báo. BTW, điều này không được ghi lại trong tài liệu tslint.
nelson6e65

1

trong phiên bản typeScript 3, hãy cập nhật tslint.json theo quy tắc chính như bên dưới:

"no-console": [
    true,
    "debug",
    "time",
    "timeEnd",
    "trace"
],

Bằng cách này, bạn chỉ cần chỉ định gỡ lỗi, thời gian, timeEnd, dấu vết không được sử dụng, nếu trong danh sách "thông tin" tslint mặc định của bạn, chỉ cần loại bỏ nó.


1
Đây là cách nó nên được thực hiện như đã nêu trong tài liệu palantir.github.io/tslint/rules/no-console
Christopher Grigg

1

Cách tôi xử lý quy tắc tslint "no-console" là trên mỗi tệp mà tôi nhận thấy là thuận tiện và bị cô lập trong giai đoạn phát triển.

Ngay khi tôi cần sử dụng console.log () đầu tiên; Visual Studio Code hiển thị tùy chọn để thêm:

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

console.log ();

Vì vậy, ở đây tôi chỉ xóa "-next-line" và lệnh này sẽ bao gồm toàn bộ tệp.

// tslint: disable: no-console

console.log ();

Tôi hy vọng nó sẽ hữu ích như một giải pháp thay thế để tắt tính năng này cho toàn bộ ứng dụng.

RON



0

nếu // tslint:disable-next-line:no-consolekhông hiệu quả, hãy thử với// eslint:disable-next-line:no-console


0
  {
    "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
    "linterOptions": {
        "exclude": [
            "config/**/*.js",
            "node_modules/**/*.ts",
            "coverage/lcov-report/*.js"
        ]
    },
    "rules": {
        "no-console": false
    },
    "jsRules": {
        "no-console": false
    }
 }

nhập mô tả hình ảnh ở đây

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.