What This Error Means
npm could not modify a resource because it is busy/locked (EBUSY).
How to Fix It
- Identify the path npm is failing on (look for the last referenced file path in the error output).
- Close editors/processes that may lock files (watchers, antivirus), then retry. On Windows, a reboot sometimes clears locks.
- Retry after cleaning local state when safe (common: remove
node_modulesand retry install).
Why It Happens
- A background process is locking files while npm is trying to rename/remove them.
How to Verify
- Re-run the original command and confirm the filesystem error no longer appears.
- If this is a permission fix, confirm new files in
node_modulesare owned by the expected user.
Manual filesystem checks
- If a directory removal fails, confirm no process is using it (platform-specific:
lsof +D <dir>).
Common CLI Output
npm ERR! code EBUSYcrashes in CI with an EBUSY error when it tries to read Prevention Tips
- Keep npm cache and project directories owned by the build user.
- Avoid running project installs as root unless you know exactly why you need it.
- Ensure CI runners have enough disk space and sensible file descriptor limits.
Where This Can Be Triggered
github.com/npm/cli/blob/417daa72b09c5129e7390cd12743ef31bf3ddb83/workspaces/libnpmexec/lib/with-lock.js
Open-source npm CLI code reference tied to this error code. - GitHub
try {
await fs.mkdir(lockPath)
} catch (err) {
if (err.code !== 'EEXIST' && err.code !== 'EBUSY' && err.code !== 'EPERM') {
throw err
}