如何解決 npm install 時報錯 - Error: EACCES: permission denied

如何解決 npm install 時報錯 - Error: EACCES: permission denied

Hugo ChunHo Lin (1chooo) Day ONE ⚡️

在我們安裝 npm 套件的時候,有時候會遇到 EACCES: permission denied 的錯誤,這是因為我們沒有權限寫入到指定的目錄,我們會看到以下錯誤(以安裝 aws-cdk 為例):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ npm install -g aws-cdk

npm ERR! code EACCES
npm ERR! syscall mkdir
npm ERR! path /usr/local/lib/node_modules/aws-cdk
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/aws-cdk'
npm ERR! [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/aws-cdk'] {
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'mkdir',
npm ERR! path: '/usr/local/lib/node_modules/aws-cdk'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

npm ERR! A complete log of this run can be found in: $USER/.npm/_logs/*.log

EACCES: permission denied
EACCES: permission denied

會發生的原因是因為我們沒有權限寫入到 /usr/local/lib/node_modules 目錄,這時候我們可以透過以下方式解決:

1
$ sudo chown -R $(whoami) /usr/local/lib/node_modules

Add -R access
Add -R access

我們在當前的 user 下,將 /usr/local/lib/node_modules 目錄的權限加上當前 user 的權限,這樣我們就可以在安裝 npm 套件的時候,不會遇到 EACCES: permission denied 的錯誤。

如此我們再重新輸入 npm install 的指令,就可以正常安裝套件了。

1
2
3
$ npm install -g aws-cdk

added 2 packages in 1s

Install npm package again. It WORKED !!!
Install npm package again. It WORKED !!!

如果我們不是要安裝 global 的套件,而是解決該專案當前的權限問題,我們可以透過以下方式解決:

1
$ sudo chown -R $(whoami) ~/.npm

會導致這個問題是因為我們在安裝時 root 與 user 之間的權限問題,透過這個方式,我們就可以解決這個問題,祝大家在安裝 npm 套件的時候都能順利不衝突!

Reference

Comments
On this page
如何解決 npm install 時報錯 - Error: EACCES: permission denied