Tại sao JSHint đưa ra cảnh báo nếu tôi đang sử dụng const?


316

Đây là lỗi tôi gặp phải khi sử dụng const:

<error line="2" column="1" severity="warning" message="&apos;const&apos; is available in ES6 (use esnext option) or Mozilla JS extensions (use moz)." source="jshint.W104" />

Mã của tôi trông như thế này:

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

Mã này hoạt động tốt chỉ có JSHint luôn cảnh báo tôi.


Tôi không thấy bất kỳ câu hỏi nào trong văn bản, nhưng có lẽ bạn đã trả lời nó : "use esnext option". Và tại sao? Không phải là thông báo lỗi khá rõ ràng? constkhông phải là tiêu chuẩn JS (chưa).
Teemu

5
hoặc sử dụng eslint thay vì jshint
Rakka Rage

Câu trả lời:


557

Khi dựa vào các tính năng của ECMAScript 6 như const, bạn nên đặt tùy chọn này để JSHint không đưa ra các cảnh báo không cần thiết.

/ * jshint esnext: true * / ( Chỉnh sửa 2015.12,29 : cú pháp được cập nhật để phản ánh ý kiến ​​của @ Olga )

/*jshint esversion: 6 */

const Suites = {
    Spade: 1,
    Heart: 2,
    Diamond: 3,
    Club: 4
};

Tùy chọn này, như tên cho thấy, nói với JSHint rằng mã của bạn sử dụng cú pháp cụ thể ECMAScript 6. http://jshint.com/docs/options/#esversion

Chỉnh sửa 2017.06.11 : thêm một tùy chọn khác dựa trên câu trả lời này .

Mặc dù cấu hình nội tuyến hoạt động tốt cho một tệp riêng lẻ, bạn cũng có thể bật cài đặt này cho toàn bộ dự án bằng cách tạo một .jshintrctệp trong thư mục gốc của dự án và thêm nó vào đó.

{
  "esversion": 6
}

1
điều này hoạt động ... chắc chắn nó sẽ là một số dòng lệnh! ... Gợi ý gợi ý dân gian jshint
Scott Stensland

9
Tài liệu hiện cho biết Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.Mặc dù plugin tích hợp Webstorm của tôi không nhận ra tùy chọn mới. Tôi đã kết thúc việc chỉ định cả hai.
Olga

5
Đối với tôi .jshintrc không phải .jshint, không chắc có sự khác biệt nào trong các phiên bản
jshint không

Giáo sư. Bạn đúng. Đã sửa.
James Hibbard

1
Sau đó khởi động lại Atom của bạn, nếu đó là trường hợp
Vitor Braga

280

Bạn có thể thêm một tệp có tên .jshintrc trong thư mục gốc của ứng dụng với nội dung sau để áp dụng cài đặt này cho toàn bộ giải pháp :

{
    "esversion": 6
}

Câu trả lời của James cho thấy rằng bạn có thể thêm một nhận xét /*jshint esversion: 6 */cho mỗi tệp, nhưng nó là công việc nhiều hơn mức cần thiết nếu bạn cần kiểm soát nhiều tệp.


1
Có một cấu hình để sử dụng này? Jshint của tôi chỉ bỏ qua những gì bên trong .jshintrc.
Ethan Yang

1
@EthanYang, Không. Không có cấu hình bổ sung. Chỉ cần đảm bảo rằng tệp có thể được tìm thấy bởi JSHint. Từ tài liệu:JSHint will start looking for this file in the same directory as the file that's being linted. If not found, it will move one level up the directory tree all the way up to the filesystem root. (Note that if the input comes from stdin, JSHint doesn't attempt to find a configuration file)
Zanon

59

Tôi đã nhận được cảnh báo tương tự khi sử dụng một báo cáo xuất khẩu. Tôi đang sử dụng Mã VS và sử dụng một cách tiếp cận tương tự với giải pháp của Wenlong Jiang.

  1. Thiết lập người dùng
  2. Cấu hình JSHint
  3. "jshint.options": {} (Biên tập)
  4. Sử dụng dấu ngoặc kép khi chỉ định"esversion"

    Hoặc sao chép đoạn mã này vào Cài đặt người dùng:

    "jshint.options": {
      "esversion": 6,
    }

Tạo một .jshintrctệp không cần thiết nếu bạn muốn định cấu hình cài đặt jshint toàn cầu cho trình chỉnh sửa của mình


8
Cảm ơn bạn. Chắc chắn câu trả lời tốt nhất ở đây cho những người sử dụng mã studio hình ảnh. Đối với ref, Cài đặt người dùng thông qua (Mac :) "Code"> Preferences> Settings.
CopyJosh

1
Cảm ơn bạn cho giải pháp bổ sung này. nó rất hữu ích.
dprogramz

41

Nếu bạn đang sử dụng VSCode:

1.

  • Chuyển đến tùy chọn -> cài đặt ( cmd + ,)
  • Nhập jshint.optionsvào thanh tìm kiếm
  • Di chuột qua nó và nhấp vào biểu tượng bút chì
  • Bây giờ nó được gắn ở phía bên phải.
  • Thêm vào "esversion": 6đối tượng tùy chọn.

2.

Hoặc chỉ cần thêm phần này vào cài đặt người dùng của bạn:

"jshint.options": {
    "esversion": 6
}

[CẬP NHẬT] cài đặt vscode mới

  • Chuyển đến tùy chọn -> cài đặt ( cmd + ,)
  • jshintvào tìm kiếm

Cài đặt VSCode

  • tiếp tục bước 2.

32

Tôi đã dành nhiều năm cố gắng để khắc phục điều này. Mọi giải pháp đều nói về 'tùy chọn cài đặt'. Tôi không biết điều đó có nghĩa là gì. Cuối cùng, tôi đã tìm ra nó. Bạn chỉ có thể bao gồm một dòng nhận xét ở đầu tệp /*jshint esversion: 6 */.

Giải pháp


24
Vấn đề duy nhất khi thực hiện theo cách này, như tôi đã tìm ra, là bạn phải thêm nhận xét vào đầu mỗi tệp bạn sử dụng. Một giải pháp tốt hơn là tạo một tệp mới trong thư mục gốc của ứng dụng bạn có tên .jshintrcvà sau đó thêm mã sau vào tệp{ "esnext": true }
Josh Pittman

17
{ "esnext": true }hiện đang bị phản đối . Bây giờ bạn nên sử dụng { "esversion": 6 }thay thế.
cybersam 30/03/2016

3
Tôi phải sử dụng một phiên bản lỗi thời của JSHint, bởi vì chỉ khi sử dụng "esnext": truetôi mới có thể giải quyết điều này. "esversion": 6không có tác dụng.
Joncom

4
Sau đó nâng cấp JShint
Cyril Duchon-Doris

18

Bạn có thể chỉ định esversion: 6 bên trong đối tượng tùy chọn jshint. Xin vui lòng xem hình ảnh. Tôi đang sử dụng plugin grunt-contrib-jshint.

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


2
Điều này làm việc cho những người sử dụng một Grunt. Thêm phần này vào gruntfile.js
JoeTidee

1
Cảm ơn bạn, đã làm việc như một cơ duyên đối với tôi. Không cần phải bỏ qua (các) tệp và thực hiện chuyển đổi cá nhân trong (các) trang độc quyền
sg28

3

Khi bạn bắt đầu sử dụng ECMAScript 6, lỗi này được IDE của bạn ném ra.

Có hai lựa chọn có sẵn:

nếu bạn chỉ có một tệp và muốn sử dụng es6 thì chỉ cần thêm dòng dưới đây vào đầu tệp.

/*jshint esversion: 6 */

Hoặc nếu bạn có số lượng tệp js hoặc bạn đang sử dụng bất kỳ khung công tác nào (như nodejs express), bạn có thể tạo một tệp mới có tên .jshintrctrong thư mục gốc của mình và thêm mã bên dưới vào tệp:

{
    "esversion": 6
}

Nếu bạn muốn sử dụng phiên bản es6 trở đi cho mỗi dự án, bạn có thể định cấu hình IDE của mình.


2

Trong gói.json của bạn, bạn có thể bảo Jshint sử dụng es6 như thế này

"jshintConfig":{
    "esversion": 6 
}

Câu trả lời được chấp nhận vào tháng 4 năm 2020 cho Visual Studio Code
ArifMustafa


1

Nếu bạn đang sử dụng cấu hình Grunt, Bạn cần thực hiện các bước sau

Thông báo cảnh báo trong Jshint:

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

Giải pháp:

  1. Đặt các tùy chọn jshint và ánh xạ tệp .jshintrc.js

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

  1. Tạo tệp .jshintrc.js trong tệp đó thêm mã sau đây
{  
  "esversion": 6  
} 

Sau khi cấu hình này, Chạy lại Nó sẽ bỏ qua cảnh báo,

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


0

Tạo một tệp có tên, giả sử jshint_opts với nội dung này: {"esversion": 6}

Sau đó gọi jshint với một cái gì đó giống như dòng lệnh này:

jshint --config jshint_opts lib / *. js


0

Đối với SublimeText 3 trên Mac:

  1. Tạo một tệp .jshintrc trong thư mục gốc của bạn (hoặc bất cứ nơi nào bạn thích) và chỉ định esversion:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Tham chiếu pwd của tệp bạn vừa tạo trong cài đặt người dùng SublimeLinter (Văn bản thăng hoa> Tùy chọn> Cài đặt gói> SublimeLinter> Cài đặt)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Thoát và khởi chạy lại SublimeText

0

Tháng 5 năm 2020 Đây là một giải pháp đơn giản tôi đã tìm thấy và nó sẽ giải quyết cho tất cả các dự án của tôi, trên windows nếu dự án của bạn ở đâu đó trong thư mục c:, tạo tệp mới .jshintrc và lưu nó trong thư mục C mở tệp .jshintrc này và viết { "esversion": 6}và đó nó các cảnh báo sẽ biến mất, tương tự sẽ hoạt động trong thư mục d

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

nhập mô tả hình ảnh ở đây có, bạn cũng có thể kích hoạt cài đặt này cho dự án cụ thể chỉ bằng cách tạo tệp .jshintrc trong thư mục gốc của dự án và thêm { "esversion": 6}


0

Tạo .jshintrctập tin trong thư mục gốc và thêm bộ ở đó phiên bản js mới nhất: "esversion": 9và phiên bản asi: "asi": true(nó sẽ giúp bạn tránh sử dụng dấu chấm phẩy)

{
    "esversion": 9,
    "asi": true
}

0

Để khắc phục điều này trong Dreamweaver CC 2018, tôi đã đi đến tùy chọn, chỉnh sửa bộ quy tắc - chọn JS, chỉnh sửa / áp dụng các thay đổi, tìm "esnext" và thay đổi cài đặt sai thành đúng. Nó làm việc cho tôi sau nhiều giờ nghiên cứu. Hy vọng nó sẽ giúp người khác.


-1

Nếu sử dụng Sublime Text 3:

  • Chuyển đến Tùy chọn -> Cài đặt
  • Trong Preferences.sublime-settings, Người dùng thêm "esversion": 6

-2

Trong phiên bản mới của Dreamweaver để giải quyết lỗi này

  • Chuyển đến Chỉnh sửa-> Tùy chọn-> Linting
  • Và quy tắc Chỉnh sửa đi đến js và quá khứ

    "jshintConfig": {"esversion": 6}

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.