Eslint и ошибка фикса при использовании темплейтов

На днях решил подключить к одному старому 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-й. Поэтому выбрана была она как исполняющая свои функции.
Post Tagged with , ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *