Skip to content

[BUG] EMFILE error in environment with low file descriptors limit #261

Open
@rschick

Description

@rschick

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

EMFILE error may be thrown during npm install, depending on the allowed file descriptors and the state of the cache before the install. An example error:

Error: EMFILE: too many open files, open '/Users/<user>/.npm/_cacache/index-v5/64/ee/136420e5adf6592619d25b411c7849220f30364ed8ba96dea19887a5d1f2'

Expected Behavior

npm install should succeed.

Steps To Reproduce

  1. Create a project directory and add package.json with the following:
{
  "name": "nuxt-app",
  "devDependencies": {
    "nuxt": "^3.7.0"
  }
}

(The error happens reliably with nuxt, but it's not related to nuxt, you can use other packages and get the same result.)

  1. Set a low file descriptor limit using ulimit -Hn 128 (It's possible to get the error with a higher ulimit, but using a low value helps to reliably reproduce the error)
  2. Delete the global cacache, eg: rm -rf /<home-dir>/.npm/_cacache/
  3. Delete the project's node_modules folder: rm -rf node_modules
  4. Run npm install
  5. EMFILE error is thrown

(Reset ulimit using ulimit -Hn unlimited)

Environment

  • npm: 10.4.0
  • Node: 20.11.0
  • OS: MacOS 14.1.2
  • platform: Macbook Pro 2019 (Intel)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions