Problem statement
The root lint command crashes while ESLint is loading @typescript-eslint/no-unused-expressions. It never reaches normal lint diagnostics, so contributors and CI cannot use lint as a quality gate.
Environment observed
- Branch:
main
- Node.js:
22.17.1
- ESLint:
9.33.0
typescript-eslint: 8.11.0
@typescript-eslint/eslint-plugin: 8.11.0
Steps to reproduce
- Install dependencies from the committed npm lockfile.
- From the repository root, run:
- The same failure can be isolated to tracked application paths with:
Actual behavior
ESLint exits with code 1 before linting the codebase:
TypeError: Error while loading rule '@typescript-eslint/no-unused-expressions':
Cannot read properties of undefined (reading 'allowShortCircuit')
Occurred while linting src/App.tsx
Expected behavior
The lint command should inspect the configured source files, report actionable violations, and return a stable exit code without crashing inside a rule implementation.
Root-cause evidence
This dependency combination matches the upstream typescript-eslint extension-rule compatibility defect fixed in version 8.15.0:
typescript-eslint/typescript-eslint#10338
The current package range/lock state can resolve an affected 8.11.0 plugin alongside ESLint 9.x.
Proposed resolution
- Upgrade
typescript-eslint and all direct @typescript-eslint/* packages together to a compatible release (8.15.0 or newer).
- Refresh and commit
package-lock.json using the project's supported Node/npm version.
- Confirm there are no stale, mixed versions with
npm ls typescript-eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser @typescript-eslint/utils eslint.
- Keep the rule enabled; do not mask the crash by disabling
@typescript-eslint/no-unused-expressions.
- Pin or document the supported Node version if the dependency set requires it.
Acceptance criteria
Verification checklist
npm ci
npm ls typescript-eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser @typescript-eslint/utils eslint
npm run lint
npm run build
Problem statement
The root lint command crashes while ESLint is loading
@typescript-eslint/no-unused-expressions. It never reaches normal lint diagnostics, so contributors and CI cannot use lint as a quality gate.Environment observed
main22.17.19.33.0typescript-eslint:8.11.0@typescript-eslint/eslint-plugin:8.11.0Steps to reproduce
Actual behavior
ESLint exits with code 1 before linting the codebase:
Expected behavior
The lint command should inspect the configured source files, report actionable violations, and return a stable exit code without crashing inside a rule implementation.
Root-cause evidence
This dependency combination matches the upstream typescript-eslint extension-rule compatibility defect fixed in version 8.15.0:
typescript-eslint/typescript-eslint#10338
The current package range/lock state can resolve an affected 8.11.0 plugin alongside ESLint 9.x.
Proposed resolution
typescript-eslintand all direct@typescript-eslint/*packages together to a compatible release (8.15.0 or newer).package-lock.jsonusing the project's supported Node/npm version.npm ls typescript-eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser @typescript-eslint/utils eslint.@typescript-eslint/no-unused-expressions.Acceptance criteria
npm cicompletes from a clean checkout.npm run lintcompletes without a rule-loader exception.npm run buildstill succeeds.Verification checklist