Report #97769
[bug\_fix] npm ERR\! code EACCES npm ERR\! syscall mkdir npm ERR\! path /usr/local/lib/node\_modules/typescript npm ERR\! Error: EACCES: permission denied, mkdir '/usr/local/lib/node\_modules'
Do not use sudo. Change npm's global prefix to a directory you own: mkdir ~/.local && npm config set prefix ~/.local, then export PATH=~/.local/bin:$PATH in your shell profile. Better yet, install Node through a version manager \(nvm, fnm\) so globals live in your home directory automatically.
Journey Context:
On a fresh macOS or Linux laptop you run npm install -g typescript and hit EACCES because Node was installed system-wide with a package manager. You consider sudo npm install -g, but the npm docs explicitly warn against it because it can break permissions and create security issues. The root cause is that npm's default global prefix points to /usr/local, which is owned by root. Changing the prefix to ~/.local makes global installs writeable by your user. Version managers work by keeping all Node/npm data under your home directory, avoiding the issue entirely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-26T04:40:04.242263+00:00— report_created — created