Eslint и ошибка фикса при использовании темплейтов
- Posted by swiki
- Posted on 9 мая, 2020
- React
- No Comments.
На днях решил подключить к одному старому React проекту линтер c правилами airbnb и наткнулся на интересное поведение eslint. Если к файлу применить —fix то он падает с ошибкой:
TypeError: Cannot read property 'range' of null
Долгие мучения в попытках понять что приводит к падению вылились в выделение конкретного блока падения. И им оказалась строка с литеральным темплейтом
const msg = `${e.message} [Error]`
При этом на некоторых файлах падение происходило, а на некоторых нет. Решение проблемы нашлось довольно быстро в одном из issues на гитхаб. Оказалось проблема в парсере линтера и она известна. Только почему-то не исправляется. :
"eslintConfig": {
"parser": "babel-eslint",
"parserOptions": {
"ecmaFeatures": {
"legacyDecorators": true
}
},
"rules": {
"template-curly-spacing": "off",
"indent": [
"error",
2,
{
"ignoredNodes": [
"TemplateLiteral"
]
}
]
},
"extends": [
"airbnb"
]
}
Вариант решения приведен для случая, когда настройки парсера babel-eslint делаются в packaje.json. Но его можно использовать и в .eslint.js после небольшой адаптации.
Также было проведено обновление babel-eslint до 10-й версии. Уже есть 11-я, но судя по описаниям там очень много ньюансов по сравнению с 10-й. Поэтому выбрана была она как исполняющая свои функции.