Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Server process exited with code 0 #1796

Open
ljukas opened this issue Mar 5, 2024 · 30 comments
Open

Server process exited with code 0 #1796

ljukas opened this issue Mar 5, 2024 · 30 comments
Labels
info-needed Issue requires more information from poster

Comments

@ljukas
Copy link

ljukas commented Mar 5, 2024

When running Eslint in vscode using flat config I get the following output:

[Info  - 10:43:56] ESLint server is starting.
[Info  - 10:43:56] ESLint server running in node v20.11.0
[Info  - 10:43:56] ESLint server is running.
[Info  - 10:43:56] ESLint library loaded from: /Users/xxx/app/node_modules/eslint/lib/unsupported-api.js
[Error - 10:43:57] Server process exited with code 0.

The eslint server keeps exiting without saying why.

This is my eslint.config.mjs

import eslint from '@eslint/js';
import prettierPlugin from 'eslint-plugin-prettier/recommended';
import reactPlugin from 'eslint-plugin-react';
import hooksPlugin from 'eslint-plugin-react-hooks';
import tseslint from 'typescript-eslint';

export default tseslint.config(
  eslint.configs.recommended,
  ...tseslint.configs.strictTypeChecked,
  {
    languageOptions: {
      parserOptions: {
        project: ['./apps/*/tsconfig.json', './packages/*/tsconfig.json'],
        tsconfigRootDir: import.meta.dirname,
      },
    },
  },
  {
    files: ['**/*.ts', '**/*.tsx'],
    plugins: {
      react: reactPlugin,
    },
    rules: reactPlugin.configs['jsx-runtime'].rules,
    settings: {
      react: {
        version: 'detect',
      },
    },
  },
  {
    files: ['**/*.tsx'],
    plugins: {
      'react-hooks': hooksPlugin,
    },
    rules: hooksPlugin.configs.recommended.rules,
  },
  {
    rules: {
      '@typescript-eslint/no-unused-vars': 'off',
    },
  },
  {
    ignores: [
      'eslint.config.mjs',
      'codegen.ts',
      'scripts/',
      '**/scripts/',
      '**/_generated/',
      '**/.*',
      '**/babel.config.js',
      '**/build/',
      '**/config-plugin-caret-color/app.plugin.js',
      '**/dist/',
      '**/expo-env.d.ts',
      '**/generated/',
      '**/metro.config.js',
      '**/metro.config.ts',
      '**/native/app.config.js',
      '**/native/app.config.ts',
      '**/native/colors.js',
      '**/native/plugins/',
      '**/tailwind.config.js',
    ],
  },
  prettierPlugin,
);

Here are some of my releveant vscode settings:

  "typescript.enablePromptUseWorkspaceTsdk": true,
  "eslint.experimental.useFlatConfig": true,
  "typescript.tsdk": "node_modules/typescript/lib",
  "eslint.workingDirectories": ["./packages/*", "./apps/*"],
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    "graphql"
  ],

Eslint works in the terminal and it works for a second or two in vscode after restart of the eslint server.

I have a monorepo project with only one eslint.config.mjs in the root that handles the entire project, no seperate .eslintrc or anything

@dbaeumer
Copy link
Member

dbaeumer commented Mar 5, 2024

Very hard to say without reproducible steps. Can you please provide me with a GitHub repository I can clone with a minimal repro case.

@dbaeumer dbaeumer added the info-needed Issue requires more information from poster label Mar 5, 2024
@Celarye
Copy link

Celarye commented Mar 8, 2024

For me the VSCode ESLint server exits with code 0 when I restart it (so not on VSCode's initial start). I still use the pre-v9.0 config.

ESLint VSCode logs:

[Info  - 22:36:53] ESLint server is starting.
[Info  - 22:36:53] ESLint server running in node v18.17.1
[Info  - 22:36:53] ESLint server is running.
[Info  - 22:36:53] ESLint library loaded from: /Users/celarye/Projects/Coding/GitHub/paperback-website/node_modules/eslint/lib/api.js
[Error - 22:36:54] Server process exited with code 0.

(Using "eslint": "^8.57.0")

ESLint config:

/* eslint-env node */
const config = {
  root: true,
  extends: [
    'eslint:recommended',
    'plugin:vue/vue3-recommended',
    '@vue/eslint-config-typescript',
    'prettier',
  ],
}

module.exports = config

One interesting thing to note is that even though it says it exited, it seems to work and show tips in VSCode:
image

Feel free to let me know if you would be interested in other stuff like my GitHub repository.

@dbaeumer
Copy link
Member

A GitHub repository with a minimal setup I could clone would be helpful.

@ljukas
Copy link
Author

ljukas commented Mar 12, 2024

Using vscode-eslint 2.4.4 it happens for me in this repo aswell, you might have to reload eslint for it to occur. The repo is straight copy of the original repo except I've removed all closed source code.

https://github.com/ljukas/vscode-eslint-repro

Thanks for looking into this

@dbaeumer
Copy link
Member

Can you please also provide steps to reproduce

@ljukas
Copy link
Author

ljukas commented Mar 15, 2024

Enter any .tsx file, open eslint output. You might need to reload the eslint server for it to exit out like above

@vincentbriglia
Copy link

vincentbriglia commented Mar 18, 2024

can you run eslint from the cli and check if it actually matches any files? it looks like vscode-eslint crashes if it cannot find any files.
if your cli-initiated eslint returns this or similar:

Oops! Something went wrong! :(

ESLint: 8.57.0

You are linting "src", but all of the files matching the glob pattern "src" are ignored.

vscode-eslint might also just crash because of it.

@ljukas
Copy link
Author

ljukas commented Mar 18, 2024

image

For me it will lint files correctly in cli

@dbaeumer
Copy link
Member

Here is what I see inside VS Code

Image

@birgersp
Copy link

Just want to chime in that I have the exact same error. eslint output yields:

[Info  - 11:22:59 AM] ESLint server is starting.
[Info  - 11:22:59 AM] ESLint server running in node v18.17.1
[Info  - 11:22:59 AM] ESLint server is running.
[Info  - 11:22:59 AM] ESLint library loaded from: /path-is-hidden/node_modules/eslint/lib/api.js
[Error - 11:23:00 AM] Server process exited with code 0.

I don't have any repos I could share to reproduce. But please let me know what I can do to help debug this.

@birgersp
Copy link

birgersp commented Mar 26, 2024

@dbaeumer

For me I could only get this error when I run the restart eslint server command.

So, here is how I reproduce the error with the repo that was provided:

cd vscode-eslint-repro
yarn install
code .
  • in the opened vscode window, open file apps/repo-app/app/modal.tsx (this should trigger eslint server to start)
  • open Eslint output
  • you should see this (no error):

image

  • open command palette (Ctrl+Shft+P)
  • restart eslint server:

image

  • open the Eslint output again, observe how the eslint server re-starts, but exits:

image

@dbaeumer
Copy link
Member

@birgersp your example is actually fine. The exit code 0 comes from the server that is restarted. For some reason it is printed into the new log. I will make this a info and ensure that it shows up in the correct log.

@cihanselcuk
Copy link

Hello,

I don't know if I should open a new thread for this, but I believe it is relevant.

Problem: Only way for me to view current problem (errors and warnings) on "Problems" tab is to
1- execute command "ESLint: restart ESLint server"
2- execute "Task: Run Task" and then "eslint: lint whole folder"

when I do this, current problems show up on problems bar. But after that if I open a file with problems and close it without fixing the problems, the related errors will disappear from the problems tab.

I checked out the output log of ESLint right after restarting it, it says:

[Info - 5:25:47 PM] ESLint server is starting.
[Info - 5:25:47 PM] ESLint server running in node v18.17.1
[Info - 5:25:47 PM] ESLint server is running.
[Error - 5:25:48 PM] Server process exited with code 0.

When I read it, I see that first it starts, then runs, and then exists with code 0 immediately. I except it to run continuously, so that I can view current problems as I write my code.

Any help is appreciated,
thanks,

@dbaeumer
Copy link
Member

@cihanselcuk actually the message Server process exited with code 0. comes from the server before restarting and this misleading message is fixed in the new version

From what you describe it is a setup problem with ESLint itself. Can you validate files successfully in the terminal using eslint from the ./node_modules/.bin` folder? If yes, please provide me with a GitHub repository a I can clone having a minimal repro case that demos what you are seeing

@anilanar
Copy link

anilanar commented Apr 20, 2024

I had the exact same problem. I switched to "Pre-release version" of vscode-eslint and that fixed it. Figured it out by considering why extension developer cannot reproduce it, obvious, because they use a different version!

Click cog next to eslint extension -> Switch to Pre-release version.

@enkelmedia
Copy link

I also got this error in one project, running another project (internal so can't share the source) on the same machine with almost the same dependencies. Are there any log files etc where one can see why we get the [Error - 3:13:40 PM] Server process exited with code 0. error?

@dbaeumer
Copy link
Member

@enkelmedia have you seen this comment: #1796 (comment)

It might be a false positive :-)

@enkelmedia
Copy link

@dbaeumer Nope, I get the error when it's startup just after loading the project/workspace. Are there any detailed logs to find out more about why this is happening?

@dbaeumer
Copy link
Member

Only the ESLint output channel.

Can you provide me with a GitHub repository with a minimal setup I can clone that demos this. Then I can have a look.

@Cauen
Copy link

Cauen commented Apr 30, 2024

The same thing happened here and I managed to fix it.

My scenario was a monorepo and i was using a @monorepo-package/eslint-config packages/eslint-config in an app apps/backend without installing @monorepo-package/eslint-config as dependancy.

@CraigglesO
Copy link

I had the exact same problem. I switched to "Pre-release version" of vscode-eslint and that fixed it. Figured it out by considering why extension developer cannot reproduce it, obvious, because they use a different version!

Click cog next to eslint extension -> Switch to Pre-release version.

This is what I had to do for the extension to work correctly. Cheers.

@taktran
Copy link

taktran commented May 16, 2024

Instead of using the pre release (which worked for me), you can also use the setting "eslint.experimental.useFlatConfig": true on the Release version

@vuggy17
Copy link

vuggy17 commented May 21, 2024

I had the exact same problem. I switched to "Pre-release version" of vscode-eslint and that fixed it. Figured it out by considering why extension developer cannot reproduce it, obvious, because they use a different version!

Click cog next to eslint extension -> Switch to Pre-release version.

switch to pre-release version, then > restart eslint server change output from:

[Info  - 22:36:53] ESLint server is starting.
[Info  - 22:36:53] ESLint server running in node v18.18.2
[Info  - 22:36:53] ESLint server is running.
[Info  - 22:36:53] ESLint library loaded from: /home/vuggy17/workspace/idle2/node_modules/eslint/lib/api.js
[Error - 22:36:54] Server process exited with code 0.

to

[Info  - 1:41:27 PM] ESLint server is starting.
[Info  - 1:41:27 PM] ESLint server running in node v18.18.2
[Info  - 1:41:27 PM] ESLint server is running.
[Info  - 1:41:28 PM] ESLint library loaded from: /home/vuggy17/workspace/idle2/node_modules/eslint/lib/api.js
[Info  - 1:41:28 PM] Server process exited successfully

@ewildee
Copy link

ewildee commented May 25, 2024

I think I'm facing the same issue: ESLint works fine when started the first time (when opening VSCode or closing and reopening the project), but it stops working after a manual restart using 'ESLint: Restart ESLint server'.

Project details:

  • Plugin: v3.0.7 (pre-release)
  • ESLint: 9.3.0
  • Local node: v22.2.0
  • A minimal eslint.config.js configuration in the root of the monorepo
  • It does not make a difference when using "eslint.workingDirectories": [{ "mode": "auto" }] vs location vs explicitly listing all workspaces

Steps to reproduce the problem (tried in a handful of projects):

  • Open VSCode
  • Open one or more files: Linting works
  • Close all files except one (as a reference to see if linting is working after a restart)
  • Run 'ESLint: Restart ESLint server'
  • In the opened file: Linting works
  • In any other newly opened file: Linting does not work

I have enabled trace and debug and noticed that:

  • After a restart, when I open a file, the extension is Sending notification 'textDocument/didOpen' but does not receive an answer
  • The server does respond when I make modifications to any of the already opened files, just not to any newly opened files
  • The problem does not occur when only changing eslint.config.js (which, I guess, causes a server reload and not a complete restart): Adjustments to rules are immediately visible in already opened and newly opened files (as long as I have not executed a 'Restart ESLint server' command in the same window)

@dbaeumer
Copy link
Member

@ewildee do you have a Github repository I can clone that demos this. It ensure that we use the same setup.

@ewildee
Copy link

ewildee commented May 29, 2024

@ewildee do you have a Github repository I can clone that demos this. It ensure that we use the same setup.

@dbaeumer Thanks for having a look. I've created a simple monorepo setup with a readme describing the steps to reproduce the problem: https://github.com/ewildee/test-20240529-vscode-eslint-minimal-monorepo

@dbaeumer
Copy link
Member

@ewildee I was not able to reproduce this. Here is what I did

cast.mp4

Is there anything special in the ESLint Output channel. Could you enable tracing using "eslint.trace.server": "messages"

@ewildee
Copy link

ewildee commented May 30, 2024

@dbaeumer It turns out my steps weren't 100% correct: Linting only doesn't work for files that haven't been opened before (and for new files), and only the first time they're opened. I've tested it on two different macOS systems.

Screen.Recording.2024-05-30.at.11.55.21.mov

The screen recording is from a MacBook running node v20 (instead of v22) without any custom ESLint settings (besides the ones in .vscode/settings.json + eslint.trace.server.

@bpneal
Copy link

bpneal commented Jun 3, 2024

The ESLint 9.*.* issue is present in Yarn 4+ (PnP enabled) but NOT in Yarn 4+ (with nodeLinker: node-modules).
I have two examples (forked off of the above mono-repo example, one with Yarn 4 (pnp) and one with Yarn 4 (node modules).

Clearly there is an issue within the PNP infra that causes the ESLint flat config not to work as expected.

@levrik
Copy link

levrik commented Jun 4, 2024

I'm experiencing the same issue that ESLint stops working randomly after some time. Restarting the ESLint server does not help and yields the results as written in the issue description. Restarting the extension host or VS Code completely fixes the issue. I'll enable tracing as suggested and report back.

ESLint 8.x, not using the new flat config.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
info-needed Issue requires more information from poster
Projects
None yet
Development

No branches or pull requests