Вызов eslint cliEngine.getConfigForFile возвращает путь к файлу парсера, а не имя или определение - PullRequest
0 голосов
/ 04 ноября 2019
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, он сможет его использовать,не выдавать ошибку, указывающую, что он не знает, где находится анализатор.

...