Skip to content

Commit

Permalink
fix: eslintInstance may not be initialized when calling lintFiles in …
Browse files Browse the repository at this point in the history
…the worker (#40)

* fix: 修复 worker 模式下 eslintInstance 为undefind的问题

修复在worker模式下因异步问题导致经常报错 Cannot read properties of undefined (reading 'lintFiles')

* fix: 调整实现方案

* chore: add comment

---------

Co-authored-by: Rui Wu <wurui.dev@gmail.com>
  • Loading branch information
fuxichen and ModyQyW authored Sep 25, 2024
1 parent 31e4cdc commit afc7bee
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions packages/core/src/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,19 @@ let eslintInstance: ESLintInstance;
let formatter: ESLintFormatter;
let outputFixes: ESLintOutputFixes;

const initPromise = initializeESLint(options).then((result) => {
eslintInstance = result.eslintInstance;
formatter = result.formatter;
outputFixes = result.outputFixes;
return result;
});

// this file needs to be compiled into cjs, which doesn't support top-level await
// so we use iife here
(async () => {
debug("Initialize ESLint");
const result = await initializeESLint(options);
eslintInstance = result.eslintInstance;
formatter = result.formatter;
outputFixes = result.outputFixes;
// remove this line will cause ts2454
const { eslintInstance, formatter, outputFixes } = await initPromise;
if (options.lintOnStart) {
debug("Lint on start");
lintFiles({
Expand All @@ -43,6 +48,8 @@ let outputFixes: ESLintOutputFixes;
})();

parentPort?.on("message", async (files) => {
// make sure eslintInstance is initialized
if (!eslintInstance) await initPromise;
debug("==== message event ====");
debug(`message: ${files}`);
const shouldIgnore = await shouldIgnoreModule(files, filter, eslintInstance);
Expand Down

0 comments on commit afc7bee

Please sign in to comment.