let lintConfig = cliEngine.getConfigForFile(<file>);
eslint.linter.verify(source, lintConfig)
Приведенный выше код вызывает ошибку, связанную с отсутствием пользовательского синтаксического анализатора.
При получении исходного файла для lint getConfigForFile()
возвращает объект конфигурации после чтения <projectroot>/.eslintrc.js.
В этом файле parser
установлен на babel-eslint
. Но возвращенный конфиг устанавливает parser
на разрешенный путь файла babel-eslint (<projectroot>/node_modules/babel-eslint/lib/index.js)
Когда linter.verify
вызывается с этой конфигурацией, он выдает ошибку, указывающую, что парсер не зарегистрирован. Местоположением, в котором parser
установлен путь к файлу, является функция ExtractedConfig.toCompatibleObjectAsConfigFileContent
.
Я не могу сказать, является ли это ошибкой или преднамеренным. В то время, когда в этой функции установлено значение parser
, объект config.parser
фактически является объектом со всей соответствующей информацией, которую он затем выбрасывает.
Я мог бы сделать linter.setParser
со значением parser
, если бы у меня было исходное имя парсера из .eslintrc
, но это не так. Я мог бы извлечь его из пути к файлу, но это выглядит действительно hacky.
Кто-нибудь знает, если это на самом деле ошибка или нет? Это легко исправить, если это так, но это может вызвать другие проблемы в других местах.
Я ожидал, что если я вызову linter.verify()
с пользовательским анализатором после прочтения файла .eslintrc
, он сможет его использовать,не выдавать ошибку, указывающую, что он не знает, где находится анализатор.