Search code examples
angularwebstormeslinthttp-live-streamingangular-eslint

ESLint: Cannot start language service process / problem with HLS .ts extension


IMPORTANT: Please see UPDATE EDIT below which provides vital info

I keep getting this error showing in WebStorm 2021.2.2 (and other recent version) when using Angular:

ESLint: Cannot start language service process

See screenshot below

All .ts files report a similar error:

ESLint: Can not get result from language service

I tried to reproduce the problem by creating a new Angular project as follows:

ng new video-and-event-listeners-test --style=scss --routing=true
cd video-and-event-listeners-test/
ng add @angular-eslint/schematics --skip-confirmation

Initially everything worked OK but then the error returned and I cannot get rid of it. I have this error in every project (my projects all contain HLS files - see edit below). The ng lint command just hangs. WebStorm just fails when you run a code inspection. Any ideas how to fix this please (without just disabling eslint)? Working without eslint is like digging a hole without a spade :(

Other versions of relevant software:

Node.js version 14.17.3
@angular/cli@12.2.6 (global install)
Angular 12.2.0
eslint 7.26.0 (installed by the above `ng add` command)

UPDATE EDIT:

OK I finally have a lead to go on! I have a directory as follows:

/src/assets/test-videos

This folder contains a bunch of HLS streaming videos. The HLS video chunks / segments have a .ts extension. A .ts extension is standard for HLS chunks but they seem to be causing ESLint to fail (since ESLint is linting .ts files). If I delete the entire folder, ESLint starts working!!! When I restore the folder, ESLint stops working.

So I tried to put the folder on ignore by adding a .eslintignore file in my project root with the contents:

src/assets/test-videos/**/*
/src/assets/test-videos/**/*
./src/assets/test-videos/**/*

src/assets/test-videos/*
/src/assets/test-videos/*
./src/assets/test-videos/*

src/assets/test-videos/
/src/assets/test-videos/
./src/assets/test-videos/

src/assets/test-videos
/src/assets/test-videos
./src/assets/test-videos

test-videos/**/*

Also I've added the following entry to .eslintrc.json

{
  "root": true,
  "ignorePatterns": [
    "projects/**/*",
    "src/assets/test-videos/**/*"
  ],
  etc
}

But still no cigar. If the problem directory is not deleted ESLint just will not work! I suppose I could rename all the HLS files to use a non-standard extension but I'd rather not. Any ideas? Many thanks

enter image description here


Solution

  • Looks as if the settings in .eslintignore only affect errors reporting, whereas the settings in tsconfig.json affect parsing. Adding "exclude": ["src/assets/test-videos"] to the root tsconfig.json should help.

    I've verified that it works the same when running eslint in terminal with eslint src/**/*.* - if the files are not excluded in tsconfig.json, ESLint runs out of memory