Чому JSHint видає попередження, якщо я використовую const?


316

Це помилка, яку я отримую під час використання 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" />

Мій код виглядає приблизно так:

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

Код працює добре, тільки JSHint попереджає мене щоразу.


Я не бачу якоїсь - яке питання в тексті, але , ймовірно , ви вже відповіли на нього: "use esnext option". І чому? Хіба це повідомлення про помилку не зовсім зрозуміло? constне є стандартним JS (поки що).
Теему

5
або використовувати eslint замість jshint
Rage

Відповіді:


557

Покладаючись на такі функції ECMAScript 6, як const, слід встановити цю опцію, щоб JSHint не викликав зайвих попереджень.

/ * jshint esnext: true * / ( Редагувати 2015.12.29 : оновлений синтаксис для відображення коментарів @ Olga )

/*jshint esversion: 6 */

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

Цей параметр, як випливає з назви, говорить JSHint, що ваш код використовує специфічний синтаксис ECMAScript 6. http://jshint.com/docs/options/#esversion

Редагувати 2017.06.11 : додано ще один варіант на основі цієї відповіді .

Хоча вбудована конфігурація працює добре для окремого файлу, ви також можете включити цей параметр для всього проекту, створивши .jshintrcфайл у корені проекту та додавши його туди.

{
  "esversion": 6
}

1
це працює ... звичайно, скоріше це буде якийсь парм командного рядка! ... натяк натяк на jshint folk
Скотт

9
Документація тепер говорить, що Warning This option has been deprecated and will be removed in the next major release of JSHint. Use esversion: 6 instead.хоча мій вбудований плагін Webstorm не розпізнає нову опцію. Нарешті я вказав і те, і інше.
Ольга

5
Для мене його .jshintrc не .jshint, не впевнений, чи є відмінності у версіях
jshint

На жаль Право ти є. Виправлено.
Джеймс Хіббард

1
Потім перезапустіть свій Атом, якщо це так
Vitor Braga

280

Ви можете додати файл з іменем .jshintrc у кореневій додаток із таким вмістом, щоб застосувати цей параметр до всього рішення :

{
    "esversion": 6
}

Відповідь Джеймса говорить про те, що ви можете додати коментар /*jshint esversion: 6 */до кожного файлу, але це більше роботи, ніж потрібно, якщо вам потрібно керувати багатьма файлами.


1
Чи є конфігурація для цього? Мій jshint просто ігнорує те, що знаходиться всередині .jshintrc.
Етан Ян

1
@EthanYang, Ні. Додаткової конфігурації немає. Просто переконайтеся, що файл може бути знайдений JSHint. З документа: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)
Занон

59

Це ж попередження я отримав під час використання експорту. Я використовую VS Code і застосував аналогічний підхід до рішення Венлонг Цзяна.

  1. Налаштування користувача
  2. Конфігурація JSHint
  3. "jshint.options": {} (Редагувати)
  4. Використовуйте подвійні лапки при вказівці"esversion"

    Або скопіюйте цей фрагмент у Налаштування користувача:

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

Створення .jshintrcфайлу не є необхідним, якщо ви хочете налаштувати глобальні параметри jshint для свого редактора


8
Дякую. Однозначно найкраща відповідь тут для тих, хто використовує візуальний код студії. Для перегляду, Параметри користувача через (Mac :) "Код"> Налаштування> Налаштування.
CopyJosh

1
Дякую за це додаткове рішення. це дуже корисно.
dprogramz

41

Якщо ви використовуєте VSCode:

1.

  • Перейдіть до налаштувань -> налаштування ( cmd + ,)
  • Введіть jshint.optionsу рядок пошуку
  • Наведіть на нього курсор і натисніть на значок олівця
  • Тепер його додано з правого боку.
  • Додати "esversion": 6до об’єкта параметрів.

2.

Або просто додайте це до налаштувань користувача:

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

[UPDATE] нові налаштування vscode

  • Перейдіть до налаштувань -> налаштування ( cmd + ,)
  • введіть jshintу пошук

Налаштування VSCode

  • продовжуйте з кроком 2.

32

Я витрачав століття, намагаючись це виправити. Кожне рішення говорить про "налаштування параметрів". Я не знаю, що це означає. Нарешті я зрозумів це. Ви можете просто включити коментований рядок у верхній частині файлу /*jshint esversion: 6 */.

Рішення


24
Єдиною проблемою з цим способом, як я з'ясував, є те, що ви повинні додавати коментар до вершини кожного файлу, який ви використовуєте. Краще рішення - створити новий файл у кореневій папці програми, названої вами, .jshintrcа потім додати наступний код у файл{ "esnext": true }
Джош Пітман

17
{ "esnext": true }зараз застаріло . Тепер ви повинні використовувати { "esversion": 6 }замість цього.
cybersam

3
Я повинен використовувати застарілу версію JSHint, тому що лише за допомогою "esnext": trueя зміг це вирішити. "esversion": 6не мали ефекту.
Йонком

4
Потім оновіть свій JShint 😉
Кирило Дюшон-Доріс

18

Ви можете вказати есверсію: 6 всередині об'єкта параметрів jshint. Будь ласка, дивіться зображення. Я використовую плагін grunt-contrib-jshint.

введіть тут опис зображення


2
Це працює для тих, хто використовує Grunt. Додайте це до gruntfile.js
JoeTidee

1
Дякую, працював як шарм для мене. Не потрібно ігнорувати файли та індивідуальну реалізацію есверсії в ексклюзивних сторінках
sg28

3

Коли ви починаєте використовувати ECMAScript 6, ця помилка передається вашим IDE.

Є два варіанти:

якщо у вас є лише один файл і ви хочете використовувати es6, просто додайте рядок нижче вгорі файлу.

/*jshint esversion: 6 */

Або якщо у вас є кількість файлу js або ви використовуєте будь-який фреймворк (наприклад, nodejs express), ви можете створити новий файл, названий .jshintrcу вашій кореневій директорії, та додати код у файлі нижче:

{
    "esversion": 6
}

Якщо ви хочете використовувати версію es6 далі для кожного проекту, ви можете налаштувати свій IDE.


2

У своєму package.json ви можете сказати Jshint використовувати es6, як це

"jshintConfig":{
    "esversion": 6 
}

Відповідь прийнята у квітні 2020 року для коду Visual Studio
ArifMustafa

1

Якщо ви використовуєте веб-штурм і якщо у вас немає власного конфігураційного файлу, просто увімкніть EcmaScript.nextопції розслаблення в

Налаштування | Мови та рамки | JavaScript | Інструменти якості коду | JSHint

Дивіться це запитання Як робити-я-вирішувати-ці-JSHint-ES6-помилки


1

Якщо ви використовуєте конфігурацію Grunt, вам потрібно виконати наступні дії

Попереджувальне повідомлення в Jshint:

введіть тут опис зображення

Рішення:

  1. Встановіть параметри jshint і відображіть файл .jshintrc.js

введіть тут опис зображення

  1. Створіть у цьому файлі .jshintrc.js, додайте наступний код
{  
  "еверсія": 6  
} 

Після налаштування цього запустіть знову. Пропуск буде попереджено,

введіть тут опис зображення


0

Створіть файл з назвою, скажімо, jshint_opts з таким вмістом: {"esversion": 6}

Потім запускайте jshint з чимось на зразок цього командного рядка:

jshint --config jshint_opts lib / *. js


0

Для SublimeText 3 на Mac:

  1. Створіть .jshintrc файл у вашому кореневому каталозі (або де завгодно) та вкажіть еверсію:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Посилайтеся на pwd файлу, який ви щойно створили, у налаштуваннях користувача SublimeLinter (Текст піднесеного> Налаштування> Настройки пакета> ПідсвічуванняLlim> Налаштування)
    // SublimeLinter Settings - User
    {
      "linters": {
        "jshint": {
          "args": ["--config", "/Users/[your_username]/.jshintrc"]
        }
      }
    }
  1. Закрийте та повторно запустіть SublimeText

0

Травень 2020 Ось просте рішення, яке я знайшов, і воно вирішиться для всіх моїх проектів, у Windows, якщо ваш проект знаходиться десь усередині c: каталогу, створіть новий файл .jshintrc і збережіть його в каталозі C, відкрийте цей .jshintrc файл і напишіть, { "esversion": 6}і це це. попередження повинні пройти, те ж саме буде працювати в d директорії

введіть тут опис зображення

введіть тут опис зображення так, ви також можете включити цей параметр для конкретного проекту, лише створивши файл .jshintrc у корені проекту та додавши { "esversion": 6}


0

Створіть .jshintrcфайл у кореневому режимі та додайте туди останню версію js: "esversion": 9та версію asi: "asi": true(це допоможе вам уникнути використання крапки з комою)

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

0

Щоб виправити це в Dreamweaver CC 2018, я перейшов до налаштувань, редагував набір правил - виберіть JS, відредагуйте / застосуйте зміни, знайдіть "esnext" та змінив помилкове налаштування на true. Це спрацювало на мене після години досліджень. Сподіваюся, це допомагає іншим.


-1

Якщо використовується піднесений текст 3:

  • Перейдіть до Налаштування -> Налаштування
  • У розділі Preferences.sublime-settings - користувач додає "esversion": 6

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.