Почему 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

Ответы:


559

Опираясь на такие функции ECMAScript 6, как const, например , вы должны установить эту опцию, чтобы JSHint не выдавал ненужных предупреждений.

/ * jshint esnext: true * / ( Изменить 2015.12.29 : обновлен синтаксис, отражающий комментарии @ Ольги )

/*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
это работает ... уверен, скорее это будет какой-то командной строки parm! ... подсказка подсказка 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
Тогда перезапустите свой Атом, если это так
Витор Брага

281

Вы можете добавить файл с именем .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)
Zanon

60

Я получил это же предупреждение при использовании оператора экспорта. Я использую VS Code и использовал аналогичный подход к решению Wenlong Jiang.

  1. Пользовательские настройки

  2. Конфигурация JSHint

  3. "jshint.options": {} (Редактировать)

  4. Используйте двойные кавычки при указании"esversion"

    Или скопируйте этот фрагмент в Настройки пользователя:

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

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


8
Спасибо. Определенно лучший ответ здесь для тех, кто использует Visual Studio Code. Для справки, Настройки пользователя через (Mac :) «Код»> Настройки> Настройки.
CopyJosh

1
Спасибо за это дополнительное решение. это очень полезно
dprogramz

42

Если вы используете VSCode:

1.

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

2.

Или просто добавьте это в ваши настройки пользователя:

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

[ОБНОВЛЕНИЕ] новые настройки vscode

  • Зайдите в настройки -> настройки ( cmd + ,)
  • введите jshintв поиск

Настройки VSCode

  • продолжить с шага 2.

33

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

Решение


24
Как я выяснил, единственная проблема с этим заключается в том, что вы должны добавлять комментарии в начало каждого файла, который вы используете. Лучшее решение - создать новый файл в корневой папке вашего приложения с именем, .jshintrcа затем добавить следующий код в файл{ "esnext": true }
Josh Pittman

17
{ "esnext": true }сейчас устарела . Теперь вы должны использовать { "esversion": 6 }вместо этого.
cybersam

3
Я должен использовать устаревшую версию JSHint, потому что только с помощью "esnext": trueя смог решить эту проблему. "esversion": 6не имел никакого эффекта.
Joncom

4
Затем обновите свой JShint 😉
Кирилл Дюшон-Дорис

18

Вы можете указать esversion: 6 внутри объекта опций jshint. Пожалуйста, смотрите изображение. Я использую плагин grunt-contrib-jshint.

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


2
Это работает для тех, кто использует Grunt. Добавьте это к gruntfile.js
JoeTidee

1
Спасибо, сработало для меня как оберег. Не нужно игнорировать файл (ы) и индивидуальную реализацию esversioning на эксклюзивной странице (страницах)
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

Если вы используете Webstorm и у вас нет собственного конфигурационного файла, просто включите опцию « EcmaScript.nextРасслабление» в

Настройки | Языки и рамки | JavaScript | Инструменты качества кода | JSHint

Посмотреть этот вопрос How-do-I-resol-these-JSHint-ES6-errors


1

Если вы используете конфигурацию Grunt, вам необходимо выполнить следующие шаги

Предупреждающее сообщение в Jshint:

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

Решение:

  1. Установите параметры jshint и сопоставьте файл .jshintrc.js

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

  1. Создайте файл .jshintrc.js в этом файле и добавьте следующий код
{  
  "esversion": 6  
} 

После того, как настроили это, снова запустите.

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


0

Создайте файл с именем, скажем, jshint_opts, с таким содержанием: {"esversion": 6}

Затем вызовите jshint с чем-то вроде этой командной строки:

jshint --config jshint_opts lib / *. js


0

Для SublimeText 3 на Mac:

  1. Создайте файл .jshintrc в своем корневом каталоге (или там, где вы предпочитаете) и укажите esversion:
    # .jshintrc
    {
      "esversion": 6
    }
  1. Ссылка на pwd файла, который вы только что создали, в пользовательских настройках SublimeLinter (Sublime Text> Предпочтения> Настройки пакета> SublimeLinter> Настройки)
    // 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» и изменил значение false на true. Это сработало для меня после нескольких часов исследований. Надеюсь, это поможет другим.


-1

При использовании Sublime Text 3:

  • Зайдите в Настройки -> Настройки
  • В Preferences.sublime-settings - пользователь добавляет «esversion»: 6

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.