SublimeLinter ESLint не смог найти плагин

При редактировании файлов javascript в Sublime Text Editor 3.x я получаю сообщение об ошибке:

Oops! Something went wrong! :(

ESLint: 6.0.1.

ESLint couldn't find the plugin "eslint-plugin-chai-expect".

(The package "eslint-plugin-chai-expect" was not found when loaded as a Node module from the directory "C:\workspace\flltools".)

It's likely that the plugin isn't installed correctly. Try reinstalling by running the following:

    npm install eslint-plugin-chai-expect@latest --save-dev

The plugin "eslint-plugin-chai-expect" was referenced from the config file in "modules\scoring\.eslintrc.yml".

If you still can't figure out the problem, please stop by https://gitter.im/eslint/eslint to chat with the team.

Я попробовал несколько решений, которые нашел в Интернете, включая удаление глобального ESLint/перемещение всех пакетов, связанных с ESLint, в глобальные, для изменения файла SublimeLinter.settings. Проблема возникает только при запуске lint через Sublime. Когда я запускаю команду eslint, она работает отлично.

Если кто-нибудь знает, почему это происходит, пожалуйста, помогите мне!

Спасибо


person idan stark    schedule 03.07.2019    source источник


Ответы (2)


Насколько я могу судить, это действительно проблема с переходом на ESLint v6. Но это не глобальная проблема установки.

Проблема теперь в том, что ESLint ищет в рабочем каталоге, из которого запускается команда eslint. Как вы говорите в вашем комментарии:

Кажется, он ищет в родительской папке (как вы можете видеть в ошибке, он ищет в c:/workspace/flltools, тогда как мой проект находится в c:/workspace/flltools/modules/scoring

Таким образом, ваш редактор запускает eslint в родительском каталоге, а не в каталоге, где находится файл package.json. Я предполагаю, что ваш редактор имеет корневой каталог проекта на один уровень выше, чем файл package.json.

Похоже, что это было исправлено в плагине SublimeLinter через проблему github # 1626: Неправильный рабочий каталог при вложенных локальных установках eslint (разбивает eslint@6)

Обратите внимание, что у меня похожие проблемы как с VSCode, так и с Vim, так что это не конкретно Sublime Text, а просто ESLint.

В документе по миграции ESLint v6 есть раздел "Плагины и общие конфигурации больше не зависят от местоположения ESLint". Он предлагает:

Если вы используете файл конфигурации, расположенный за пределами локального проекта (с флагом --config), рассмотрите возможность установки плагинов в качестве зависимостей этого файла конфигурации и установки флага --resolve-plugins-relative-to для расположения файла конфигурации.

Этот --resolve-plugins-relative-to решит проблему тем, что вы сможете указать путь к тому, где внутри находится package.json.

person icc97    schedule 28.10.2019

Скорее всего, вы обновили свой ESLint до v6.

Согласно Переход на Документы 6.0

Если вы используете глобальную установку ESLint (например, установленную с npm install eslint --global) вместе с подключаемыми модулями.

Затем вы должны установить эти плагины локально в проекты, в которых вы запускаете ESLint.

В вашем случае установите eslint-plugin-chai-expect и другие подключаемые модули (если они используются) как devDependencies локально в вашем проекте.

npm install --save-dev eslint-plugin-chai-expect

Если ваш файл конфигурации расширяет общие конфигурации и/или парсеры, вы должны убедиться, что эти пакеты установлены как зависимости проекта, содержащего файл конфигурации.

person Sivanesh S    schedule 04.07.2019
comment
Да. В моем package.json у меня есть эти devDependencies. Кажется, он ищет в родительской папке (как вы можете видеть в ошибке, он ищет в c:/workspace/flltools, тогда как мой проект находится в c:/workspace/flltools/modules/scoring. Может быть, это как-то связано с проблемой? Я проверил, и в этом каталоге нет package.json. - person idan stark; 04.07.2019
comment
Я только что посмотрел исходный проект, содержащий мой общий файл, eslint-plugin-chai-expect находится в optionalDependencies. Как вы думаете, это может быть проблемой? - person idan stark; 05.07.2019
comment
Да, может быть в соответствии с документами. Если файлы конфигурации доступны для совместного использования, сделайте их зависимостями и посмотрите, работает это или нет. - person Sivanesh S; 05.07.2019
comment
Когда я работаю с Sublime, я открываю весь проект (в данном случае он называется fllltools). Я обнаружил, что проблема не воспроизводится, если в Sublime я открываю только текущий репозиторий (т.е. flltools/modules/scoring). Я думаю, может быть, по какой-то причине он ищет package.json только в корневом каталоге... - person idan stark; 05.07.2019