오류 : EACCES : 권한이 거부되었습니다.


99

npm install lodash를 실행 했지만 오류 : EACCES : 권한 거부 오류가 발생합니다. 권한 문제라는 것을 알고 있지만 내가 아는 한 노드 모듈을 로컬로 설치하는 데 sudo 권한이 필요하지 않습니다. sudo로 실행하면 ~ / node_modules 폴더에 설치됩니다. drwxrwxr-x 는 기존 폴더의 파일 권한입니다. 나는 무엇이 잘못되었을 지 알 수 없다.

다음은 오류 메시지입니다.

npm ERR! tar.unpack untar error /home/rupesh/.npm/lodash/4.13.1/package.tgz
npm ERR! Linux 3.13.0-88-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "lodash"
npm ERR! node v4.3.1
npm ERR! npm  v2.14.12
npm ERR! path /home/rupesh/node_modules/lodash
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:82:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/rupesh/Desktop/es6/npm-debug.log

폴더 node_modules루트 의 소유자 입니까?
AJS

node_module 폴더는 lodash를 설치할 폴더 안에 아직 생성되지 않았습니다.
xruptronics

/ home / rupesh / 디렉토리 또는 다른 디렉토리에서 npm install을 실행 했습니까?
AJS

내가 설치 NPM 실행하는 폴더의 경로 ~ / 데스크톱 / ES6입니다
xruptronics

무슨의 출력 ls -l ~/Desktop | grep es6메이크업 확실히 당신은 ES6 디렉토리의 소유자
AJS

답변:


79

이 명령은 문제를 해결합니다. 그것은 나를 위해 일했습니다.

sudo npm install -g --unsafe-perm=true --allow-root

저와 같은 사용자에게는이 명령이 작성 당시에 작동 한 것처럼 보이지만 Node에 v10.10.0대해 다음 오류가 발생했습니다. "npm ERR! 설치할 수 없습니다. / var / www / project : 패키지 이름 누락"
Wayne Smallman

1
--unsafe-perm = true --allow-root 플래그는 노드 v10.15.0을 사용하여 node-sass가 설치되지 않는 기존 애플리케이션을 루트 사용자로 설치하는 데 도움이되었습니다. node-sass를 로컬 디렉토리 node_modules 폴더에 설치하는 데 사용한 정확한 명령은 # npm install --save-dev --unsafe-perm = true --allow-root node-sass @ latest
피터 에드워즈

루트를 사용하여 문제를 해결할 수 있습니다 (권장되지는 않음).
Chris Marotta

이 플래그를 사용하여 작동하도록 할 수 있었으므로 실제로 대답은 다음과 같습니다 .sudo npm install -g --unsafe-perm = true --allow-root <package-name> @ <version-name>
Frank Hu MSFT

46

전 세계적으로 webpack 서버 설치와 동일한 문제가 있습니다. 이 URL의 단계를 사용하십시오. 내 문제를 해결했습니다.

위에서 언급 한 단계 : 시작하기 전에 컴퓨터를 백업하십시오.

전역 설치를위한 디렉토리를 만듭니다.

1. mkdir ~/.npm-global

새 디렉터리 경로를 사용하도록 npm을 구성합니다.

2.npm config set prefix '~/.npm-global'

~ / .profile 파일을 열거 나 만들고 다음 줄을 추가합니다.

삼.export PATH=~/.npm-global/bin:$PATH

명령 줄로 돌아가서 시스템 변수를 업데이트합니다.

4.source ~/.profile

테스트 : sudo를 사용하지 않고 전역 적으로 패키지를 다운로드합니다 .

npm install -g jshint

2-4 단계 대신 해당 ENV 변수를 사용할 수 있습니다 (예 : ~ / .profile을 수정하지 않으려는 경우).

NPM_CONFIG_PREFIX=~/.npm-global

1
Mojave에서 일했습니다. 4 ~ 5 시간의 문제 해결 후 많은 감사를드립니다.
Johnny

11

npm init를 사용하여 package.json 을 생성 하면 문제가 해결되었습니다.


하지만 --save 또는 --save-dev 또는 유사한 명령을 사용하지 않았기 때문에 package.json 파일이 업데이트되거나 사용되지 않아 노드 모듈을 설치하는 동안 package.json 파일이 필요한 이유를 모르겠습니다.
xruptronics

이것은 이상합니다. 나는 당신의 npm conf에서 어떤 것이 엉망이되어 초기화를하고 있다고 생각합니다.
AJS

npm 6.9.0과 비슷한 문제가 있었고 이것은 나에게도 효과적이었습니다.
Chris Marotta 19

11

Linux에서 문제가 발생했습니다. 나는 썼다

chown -R myUserName ./* 

내 프로젝트 폴더에.


7
매우 권장하지 않습니다. 그것은 모든 디렉토리에 영향을 미치고 그들 중 하나에 대한 루트 권한을 제거합니다. 일부 항목을 루트로 설정해야하는 경우 현재 구성이 삭제됩니다.
Patrick Da Silva 19

8

내가 게시 한 로그에서 볼 수있는 것 :

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',

디렉토리에 디렉토리 /home/rupesh/node_modules/를 생성하는 데 필요한 권한 chown -r rupesh:rupesh /home/rupesh/node_modules/이 없으므로 실행 하면 해결됩니다.


chown -R rupesh : rupesh / home / rupesh / node_modules /를 실행하고 npm install lodash를 다시 실행하면 ~ / node_module 폴더에 lodash가 다시 설치되었습니다.하지만 이번에는 오류가 발생하지 않지만 설치하려는 위치가 아닙니다.
xruptronics

예, 데스크톱이 아닌 홈 디렉토리에 프로젝트를 만들어야한다는 것을 알고 있습니다. 어떤 이유로 npm은 어떤 이유로 모듈을 설치하는 것 /home/rupesh/node_modules입니다. 홈 디렉토리에서 일하는 모든 방법은 이상적인 어쨌든해야한다
AJS

나는 ~ / Projects / es6이 ~ / Desktop / es6 구조와 동일하다고 생각합니다. 내가 이해하는 데 어려움을 겪고있는 것은 왜 node_modules가 es6 폴더 안에 생성되지 않았고 왜 lodash (또는 무엇이든) 모듈이 그 안에 설치되지 않은 이유입니다. 이전에이 문제에 직면 한 적이 없었지만 오늘 무엇이 잘못되었는지, 그것이 제가 알아 내고 싶은 것입니다.
xruptronics

네, 이전 두 개의 댓글을 읽고 어리 석음을 깨달았습니다. 코드가 loadash모듈 을 찾을 수 있습니까?.
AJS

7

others(rx)에 대한 쓰기 권한이 없습니다 . 시도

chmod a+w <folder>

반복합니다.


2
의 모든 폴더에서 사용하지 않도록 chown하는 -r옵션이 node_modules없습니까?
DrakaSAN

@Juanjo Salvador 작동하지 않았고 동일한 오류가 발생합니다.
xruptronics

@DrakaSAN 예, chown에는 재귀 옵션이 있습니다.
Juanjo Salvador

6

이것은 내 문제를 즉시 해결했습니다-mac Mojave 10.14.6-PhpStorm.

처리되지 않은 거부 오류 : EACCES : 권한이 거부되었습니다. mkdir '/Users/myname/.npm/_cacache/index-v5/fb/5a'

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

원본 게시물 : https://stackoverflow.com/a/50639828


4

FWIW 동일한 증상이 있었지만 패키지가 다릅니다. 생성 package.json및 실행하는 npm initNOT 내 문제를 해결.

이 시스템에서이 위치의 새 폴더가 루트 권한으로 생성 된 것 같습니다. 동안npm install 새 폴더가 생성됩니다. 이로 인해 sudo를 사용하더라도 npm 설치가 도중에 실패했습니다.

해결책은 npm install app루트 umask가없는 다른 위치에서 실행 하는 것이 었습니다 .


4

아래 명령으로 프로젝트 폴더에 대한 모든 권한을 부여하십시오.

sudo chmod -R 777 /yourProjectDirectoryName

함께 달리다

sudo npm install lodash

그것은 주니어 솔루션입니다
Pablo Papalardo

777도 필요하지 않을 수도 있습니다. 저에게 문제는 #이 너무 낮다는 것입니다. (775가 수정했습니다.)
Andrew

"파일 또는 디렉토리에 777 권한을 설정하면 모든 사용자가 읽고, 쓰고, 실행할 수 있으며, 엄청난 보안 위험을 초래할 수 있습니다." - linuxize.com/post/what-does-chmod-777-mean
MillerC

4

관련 문제 :

며칠에 걸쳐 3 시간을 낭비했습니다.

AWS EC2 시스템에서 다음은 작동했습니다.

sudo chown -R $(whoami) /home/ubuntu/.cache
sudo chown -R $(whoami) /home/ubuntu/.config
sudo chown -R $(whoami) /home/ubuntu/.local
sudo chown -R $(whoami) /home/ubuntu/.npm
sudo chown -R $(whoami) /home/ubuntu/.pm2

도움이 되었기를 바랍니다.


3

내 npm 디렉토리의 권한을 변경하여이 문제를 해결했습니다. 나는 나를 위해 npm 글로벌 디렉토리로 갔다.

/home/<user-name>

이 명령을 입력하여이 디렉토리로 이동했습니다.

cd /home/<user-name>

그런 다음이 명령을 입력하여 .npm 폴더의 권한을 변경했습니다.

sudo chmod -R 777 ".npm"

그것은 나에게 매력처럼 작동했습니다. 그러나 이것에는 보안 결함이 있습니다. 즉, 글로벌 패키지 디렉토리가 모든 레벨에서 액세스 가능합니다.


전 세계가이 특정 폴더에 액세스하도록 허용하는 이유는 무엇입니까?
egdavid

2

먼저 루트에 -g (글로벌)없이 설치하십시오. -g (글로벌)을 사용해 본 후 그것은 나를 위해 일했습니다.


일했다 !! Mac에서 내 코드 폴더를 내 루트 폴더 인 HardDrive /로 옮겼고 "npm install"이 완벽하게 실행되었습니다. 그런 다음 코드 폴더를 HardDrive / users / myUserName / Projects / code 내에서 원하는 위치로 다시 이동하고 "npm install"을 다시 실행했으며 이번에는 작동했습니다.
Josh

2

LUBUNTU 19.10 / 같은 문제 실행 : $ npm start

덤프 : 오류 : EACCES : 권한이 거부되었습니다. Object에서 '/home/simon/xxx/pagebuilder/resources/scripts/registration/node_modules/.cache/@babel/register/.babel.7.4.0.development.json'을 엽니 다. Object.fs.writeFileSync (fs.js : 1299 : 33)의 fs.openSync (fs.js : 646 : 18) 저장 (/ home / simon / xxx / pagebuilder / resources / scripts / registration / node_modules / @ babel /) register / lib / cache.js : 52 : 15) at _combinedTickCallback (internal / process / next_tick.js : 132 : 7) at process._tickCallback (internal / process / next_tick.js : 181 : 9) at Function.Module.runMain (module.js : 696 : 11) Object. (/home/simon/xxxx/pagebuilder/resources/scripts/registration/node_modules/@babel/node/lib/_babel-node.js:234:23) at Module._compile (module.js : 653 : 30) at Object Module.load (module.js : 566 : 32)의 .Module._extensions..js (module.js : 664 : 10)

내 기본 사용자 (관리자)가 노드 모듈 디렉토리에 대한 권한이없는 것 같습니다.

이것은 나를 위해 그것을 고쳤습니다!

$ sudo chmod a+w node_modules -R ## from project root


2

다음을 사용해보십시오 : 명령 줄의 홈 디렉터리에 전역 설치를위한 디렉터리를 만듭니다.

mkdir ~/.npm-global

새 디렉터리 경로를 사용하도록 npm을 구성합니다.

npm config set prefix '~/.npm-global'

선호하는 텍스트 편집기에서 ~ / .profile 파일을 열거 나 만들고 다음 줄을 추가합니다.

export PATH=~/.npm-global/bin:$PATH

명령 줄에서 시스템 변수를 업데이트합니다.

source ~/.profile

sudo를 사용하지 않고 전 세계적으로 패키지 설치를 테스트하십시오.


1

다음은 GNU / Linux (Debian) 사용자를위한 솔루션입니다 ( USERNAME사용자 이름으로 바꿉니다 ).

sudo chown -R $USER:$(id -gn $USER) /home/USERNAME/.config

0

dist 폴더를 제거하면 내 문제가 해결됩니다!


0

Windows에서는 포트가 이미 IIS에서 사용 중이었습니다.

IIS를 중지 (오른쪽 클릭, 종료)하면 문제가 해결되었습니다.


0

전역 node_modules디렉토리 의 소유자를 사용자로 변경하십시오 .

sudo chown -R $USER:$GROUP /usr/local/lib/node_modules

0

나는 이러한 제안의 대부분을 시도했지만 아무것도 효과가 없었습니다. 그런 다음 실행 npm clean-install하여 문제를 해결했습니다.


0

노드는 다음을 실행할 것을 권장합니다.

 sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config

실행하면

npm config

다음과 같은 것을 볼 수 있습니다.

                   npm update check failed                   
             Try running with sudo or get access             
            to the local update config store via             
 sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config 

그것은 나를 위해 일했습니다.


-3

이 명령을 실행하면 문제가 해결됩니다!

sudo chmod -R 777 /usr/local/bin
sudo chmod -R 777 /usr/local/lib/node_modules

들어 /usr/local모든 하위 디렉토리 및 권한은해야 rwxr-xr-x하고 루트가 소유. 시스템 사용자는이 dir 구조 내에서 읽고 실행할 수 있지만 파일을 편집하거나 만들 수는 없습니다. 즉, 귀하의 답변은 모든 사람에게 권한을 부여하는 것이 좋습니다. 그리고 영향을받는 방법과 내용, 문제가 해결되는 이유를 설명하지 않습니다.
Kuliraj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.