오류 : 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 init한 NOT 내 문제를 해결.

이 시스템에서이 위치의 새 폴더가 루트 권한으로 생성 된 것 같습니다. 동안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.