Почему я получаю «Ошибку синтаксического анализа: неожиданный токен <" из ESLint в компонентах Vue?

#laravel #vue.js #eslint

#laravel #vue.js #eslint

Вопрос:

Я создал проект Laravel и установил VSCode и все необходимые расширения. Одним из них является ESLint, и он отлично работает с JS-файлом, но когда я открываю компонент Vue, например (resources/js/component/ExampleComponent.vue), я получаю эту ошибку от ESLint:

«Ошибка синтаксического анализа: неожиданный токен <eslint [1, 1]»

Мой .eslintrc.js файл был сгенерирован с использованием ./node_modules/.bin/eslint --init вопросов и ответов на них.

Я уже погуглил и нашел это решение:

npm install babel-eslint --save-dev

и добавьте это в .eslintrc.js :

parser: "babel-eslint"

но это все равно не работает, ошибка остается там.

Вот мой ExampleComponent.vue (неизмененный из Laravel):

 <template> (ESLint error here: "Parsing error: Unexpected token < eslint [1,1]")
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">
                        Example Component
                    </div>

                    <div class="card-body">
                        I'm an example component.
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        mounted() {
            console.log('Component mounted.')
        }
    }
</script>
  

Вот мой .eslintrc.js :

 module.exports = {
  env: {
    browser: true,
    es6: true,
  },
  extends: 'airbnb-base',
  globals: {
    Atomics: 'readonly',
    SharedArrayBuffer: 'readonly',
  },
  parserOptions: {
    ecmaVersion: 2018,
    sourceType: 'module',
    parser: "babel-eslint",
  },
  plugins: [
    'vue',
  ],
  rules: {
  },
};
  

Комментарии:

1. Похоже, вы не установили плагин Vue

2. Вы говорите об eslint-plugin-vue? Когда я использовал eslint —init, он установил для меня плагин vue. У меня есть это в моем файле package.json (связанном с ESLint): «babel-eslint»: «^ 10.0.1», «eslint»: «^ 5.16.0», «eslint-config-airbnb-base»: «^ 13.1.0», «eslint-config-google»: «^0.12.0», «eslint-plugin-babel»: «^ 5.3.0», «eslint-plugin-import»: «^ 2.17.2», «eslint-plugin-vue»: «^ 5.2.2»,

Ответ №1:

Я считаю, что вам нужен плагин eslint-plugin-vue и для настройки вашей .eslintrc.js конфигурации на одну из конфигураций пакета:

  • "extends": ["plugin:vue/base"]
  • "extends": ["plugin:vue/essential"]
  • "extends": ["plugin:vue/strongly-recommended"]
  • "extends": ["plugin:vue/recommended"]

Вы можете прочитать больше об eslint-plugin-vue этом здесьвот ссылка на аналогичную проблему, с которой вы столкнулись.

Надеюсь, это поможет!

РЕДАКТИРОВАТЬ: это eslint конфигурация из vue cli проекта:

 module.exports = {
  "root": true,
  "env": {
    "node": true
  },
  "extends": [
    "plugin:vue/essential",
    "eslint:recommended"
  ],
  "rules": {},
  "parserOptions": {
    "parser": "babel-eslint"
  }
}
  

Комментарии:

1. Поскольку я использую базу Airbnb, я просто добавляю «плагин: vue / рекомендуемый» и «eslint: рекомендуемый» на моем.eslintrc.js и теперь это работает. Спасибо.

2. Использование файла .eslintc в моем корне с указанным выше как JSON устранило мою проблему.