Почему пакет Atom Linter-Eslint не распознает литералы шаблонов?

В документации по шаблонным литералам для ES6 есть следующее пример синтаксиса:

`string text ${expression} string text`

После этого моя функция:

function madLib (verb, adjective, noun) {
    return `We shall ${verb} the ${adjective} ${noun}.`;
}

В консоли это выводит, как ожидалось:

We shall fly the iridescent zoo.

Однако пакет eslinter жалуется на фатальную ошибку синтаксического анализа при первом обратном тике, ссылаясь на

Unexpected character '`' 

Почему это?

(Этот сообщение SO о литералах касается синтаксической ошибки - не удалось найти другие похожие сообщения eslinter.)


person Samuel Lyon    schedule 08.06.2016    source источник


Ответы (2)


ESLint по умолчанию настроен только на линтинг кода ES5. Литералы шаблонов являются частью спецификации ES6. Из-за этого парсер не сможет проанализировать ваш код JavaScript с фатальной ошибкой. Вам нужно создать .eslintrc файл в корне вашего проекта и установить ecmaVersion на 6. Подробнее о настройке ESLint см. http://eslint.org/docs/user-guide/configuring#specifying-parser-options

person Ilya Volodin    schedule 08.06.2016
comment
Сработало, спасибо! Еще один для вас, Илья, ESLint все еще огорчает меня по поводу назначения аргументов по умолчанию, например. function myFunction (name = 'hello') { return name; }. Там написано Unexpected character '='. Разве это не покрывается сменой ecmaVersion версии на 6? - person Samuel Lyon; 08.06.2016
comment
Это должно работать, как только вы включите ES6. Параметры по умолчанию являются частью спецификации ES6. - person Ilya Volodin; 09.06.2016

так и можно. в файле .eslintrc.js измените значения "кавычек" (для меня это single) вот так:

"quotes": ["error", "single", {
        avoidEscape: true,
        allowTemplateLiterals: true
    }],

вы можете использовать обратный тик и избежать побега!

person Hamed Keshavarz M    schedule 29.12.2018