cli icon indicating copy to clipboard operation
cli copied to clipboard

[[email protected]] spawn E2BIG or ENAMETOOLONG

Open LayZeeDK opened this issue 1 year ago • 19 comments

What happened?

When I run yarn exec code-pushup collect --config=code-pushup.config.ts in a large Nx 17.1.3 workspace with Angular 16.2.12 (+500,000 LOC, ~500 Nx projects), I get:

  • spawn E2BIG error in the node:18 container image (Debian 12.4 "Bookworm") in GitLab CI
  • spawn ENAMETOOLONG error locally on Windows.

Code PushUp configuration:

import eslintPlugin, {
  eslintConfigFromNxProjects,
} from '@code-pushup/eslint-plugin';
import { CoreConfig } from '@code-pushup/models';

export default {
  persist: {
    outputDir: 'dist/.code-pushup',
    format: ['json', 'md'],
  },
  plugins: [await eslintPlugin(await eslintConfigFromNxProjects())],
  categories: [
    {
      slug: 'bug-prevention',
      title: 'Bug prevention',
      refs: [
        {
          type: 'group',
          plugin: 'eslint',
          slug: 'problems',
          weight: 100,
        },
      ],
    },
    {
      slug: 'code-style',
      title: 'Code style',
      refs: [
        {
          type: 'group',
          plugin: 'eslint',
          slug: 'suggestions',
          weight: 75,
        },
        {
          type: 'group',
          plugin: 'eslint',
          slug: 'formatting',
          weight: 25,
        },
      ],
    },
  ],
} satisfies CoreConfig;

What would you expect to happen?

The yarn exec code-pushup collect --config=code-pushup.config.ts command should work no matter the codebase size or length of paths.

What steps did you take?

  1. Add Code PushUp to a large Nx 17.1.3 workspace with Angular 16.2.12 (+500,000 LOC, ~500 Nx projects)
  2. Run yarn exec code-pushup collect --config=code-pushup.config.ts

What operation system are you on?

Windows

Node version

18.19.0

Relevant log output

node:18

Code PushUp CLI
Run collect...
Run Plugins:                                            0% | 
Run Plugins:                                            0% | Executing  ESLint
Run Plugins: ████████████████████████████████████████ 100% | Executing  ESLint
Run Plugins: ████████████████████████████████████████ 100% | Done running plugins
Plugins failed: 
spawn E2BIG
Error: Plugins failed: 1 errors: spawn E2BIG
    at executePlugins (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1644:11)
    at async collect (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1673:25)
    at async collectAndPersistReports (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1796:18)
    at async handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1880:7)
    at async Object.handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1997:14)
code-pushup collect
Run Plugins and collect results
Options:
      --progress             Show progress bar in stdout.
                                                       [boolean] [default: true]
      --verbose              When true creates more verbose output. This is help
                             ful when debugging.      [boolean] [default: false]
      --config               Path the the config file, e.g. code-pushup.config.j
                             s       [string] [default: "code-pushup.config.js"]
      --persist.outputDir    Directory for the produced reports         [string]
      --persist.filename     Filename for the produced reports.         [string]
      --persist.format       Format of the report output. e.g. `md`, `json`
                                                                         [array]
      --upload.organization  Organization slug from portal              [string]
      --upload.project       Project slug from portal                   [string]
      --upload.server        URL to your portal server                  [string]
      --upload.apiKey        API key for the portal server              [string]
      --onlyPlugins          List of plugins to run. If not set all plugins are
                             run.                          [array] [default: []]
  -h, --help                 Show help                                 [boolean]
Error: Plugins failed: 1 errors: spawn E2BIG
    at executePlugins (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1644:11)
    at async collect (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1673:25)
    at async collectAndPersistReports (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1796:18)
    at async handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1880:7)
    at async Object.handler (file:///builds/xxx/node_modules/@code-pushup/cli/index.js:1997:14)

Windows 11

Code PushUp CLI
Run collect...

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
Run Plugins: ████████████████████████████████████████ 100% | Done running plugins
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 

Plugins failed:
spawn ENAMETOOLONG
Error: Plugins failed: 1 errors: spawn ENAMETOOLONG
    at executePlugins (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1644:11)
    at async collect (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1673:25)
    at async collectAndPersistReports (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1796:18)
    at async handler (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1880:7)
    at async Object.handler (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1997:14)
code-pushup collect

Run Plugins and collect results

Options:
      --progress             Show progress bar in stdout.
                                                       [boolean] [default: true]
      --verbose              When true creates more verbose output. This is help
                             ful when debugging.      [boolean] [default: false]
      --config               Path the the config file, e.g. code-pushup.config.j
                             s       [string] [default: "code-pushup.config.js"]
      --persist.outputDir    Directory for the produced reports         [string]
      --persist.filename     Filename for the produced reports.         [string]
      --persist.format       Format of the report output. e.g. `md`, `json`
                                                                         [array]
      --upload.organization  Organization slug from portal              [string]
      --upload.project       Project slug from portal                   [string]
      --upload.server        URL to your portal server                  [string]
      --upload.apiKey        API key for the portal server              [string]
      --onlyPlugins          List of plugins to run. If not set all plugins are
                             run.                          [array] [default: []]
  -h, --help                 Show help                                 [boolean]

Error: Plugins failed: 1 errors: spawn ENAMETOOLONG
    at executePlugins (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1644:11)
    at async collect (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1673:25)
    at async collectAndPersistReports (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1796:18)
    at async handler (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1880:7)
    at async Object.handler (file:///D:/projects/xxx/node_modules/@code-pushup/cli/index.js:1997:14)

LayZeeDK avatar Dec 21 '23 11:12 LayZeeDK