방금 nodejs.org의 패키지를 통해 node와 npm을 설치했으며 npm으로 무언가를 검색하거나 설치할 때마다 명령을 sudo하지 않으면 다음 오류가 발생합니다. 이것이 권한 문제라고 생각합니까? 나는 이미 관리자입니다.
npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR! { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/Users/chietala/.npm/-/all/.cache.json' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "bower"
npm ERR! cwd /Users/chietala
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Users/chietala/.npm/-/all/.cache.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/chietala/npm-debug.log
npm ERR! not ok code 0
답변
홈 디렉토리의 권한 문제처럼 보입니다. .npm 디렉토리의 소유권을 되 찾으려면 다음을 실행하십시오.
sudo chown -R $(whoami) ~/.npm
답변
당신의 쓰기 등의 작업을 수행 할 때 설치 노드가 요구 될 때 사용 권한은 사용 NPM 디렉토리 ( npm link
, npm install -g
, 등).
루트 권한으로 노드 설치를 실행했을 가능성이 있으므로 글로벌 패키지 설치가 루트 권한을 요구하는 이유입니다.
해결 방법 1 : NVM
권한으로 해킹하지 말고 올바른 방식으로 노드를 설치하십시오.
개발 시스템에서는 루트 권한으로 노드를 설치하고 실행하지 않아야합니다. 그렇지 않으면와 같은 항목 npm link
에 npm install -g
동일한 권한이 필요합니다.
NVM (Node Version Manager)을 사용하면 루트 권한없이 노드를 설치할 수 있으며 여러 버전의 Node를 설치하여 쉽게 재생할 수 있습니다. 개발에 적합합니다.
- 노드 제거 (루트 권한이 필요할 수 있음). 도움 이 될 수 있습니다.
- 그런 다음 이 페이지의 지침 에 따라 NVM을 설치 하십시오 .
- NVM을 통한 노드 설치 :
nvm install node
이제 npm link
, npm install -g
더 이상 루트로 당신을 필요로하지 않습니다.
편집 : https://docs.npmjs.com/getting-started/fixing-npm-permissions 참조
해결 방법 2 : 지정된 사용자를 위해 패키지를 전체적으로 설치
권한으로 해킹하지 말고 전 세계적으로 npm 패키지를 올바르게 설치하십시오.
당신은 OSX 또는 Linux에 있다면, 당신은 할 수 있습니다 글로벌 패키지의 사용자 전용 디렉토리를 생성 하고 설정 npm
하고 node
전 세계적으로 설치된 패키지를 찾는 방법을 알고.
sudo없이 전체적으로 npm 모듈을 설치하는 방법에 대한 단계별 지침은 이 훌륭한 기사 를 확인하십시오 .
npm 권한 수정 에 대한 npm의 설명서도 참조하십시오 .
답변
또한 node_modules
디렉토리에 쓰기 권한이 필요합니다 .
sudo chown -R $USER /usr/local/lib/node_modules
답변
“시스템 전역”폴더에서 소유자를 변경하는 것은 해킹입니다. 새로 설치 하는 경우 “사용자 전역”프로그램에 대해 이미 쓰기 가능한 위치를 사용하도록 NPM을 구성 합니다.
npm config set prefix ~/npm
그런 다음 해당 폴더를 경로에 추가하십시오.
export PATH="$PATH:$HOME/npm/bin"
참조 @ErikAndreas ‘ 대답 에 NPM 모듈은 sudo를하지 않고 전 세계적으로 설치되지 않습니다
및 이상 단계별 가이드 에 의해 @sindresorhus 도 세트 $MANPATH
.
답변
부트 스트랩 3에 대한 CSS를 컴파일하기 위해 Recess ( https://github.com/twitter/recess )를 설치할 때이 문제가 발생했습니다 .
홈을 설치할 때 :
-npm install recess -g
-
Noah가
말하는home
것처럼 디렉토리 에서 권한을 잠금 해제해야합니다 .sudo chown -R `whoami` ~/.npm
-
Xilo가
말하는node_modules
것처럼 디렉토리에 대한 쓰기 권한도 필요 하므로 여전히 작동하지 않으면 다음을 시도하십시오.sudo chown -R `whoami` /usr/local/lib/node_modules
-
여전히 오류가 표시되면 권한 을 수정
/usr/local
해야 할 수도 있습니다 .sudo chown -R `whoami` /usr/local
이 게시물에 표시된 것처럼 /usr/local/
Mac을 사용하는 경우 실제로 시스템 디렉토리가 아니므로이 답변은 실제로 Mac 사용자에게는 완벽하게 “안전”합니다. 그러나 Linux 를 사용하는 경우 아래에서 다중 사용자 친화적 인 시스템 디렉터리 안전 (보다 복잡한) 솔루션에 대한 Christopher Will 의 답변을 참조하십시오 .
답변
조심해!!! 조심해!!! 조심해!!!
보안 위험 때문에 chown 또는 chmod는 해결책 이 아닙니다 .
대신 이것을하십시오 :
먼저 전화를 걸면 npm이 가리키는 곳을 확인하십시오.
npm config get prefix
/ usr이 반환되면 다음을 수행 할 수 있습니다.
mkdir ~/.npm-global
export NPM_CONFIG_PREFIX=~/.npm-global
export PATH=$PATH:~/.npm-global/bin
이렇게하면 Home-Directory에 npm-Directory가 만들어 npm
집니다.
이 변경 사항을 영구적으로 유지하려면 .bashrc에 export-command를 추가해야합니다.
echo -e "export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=\$PATH:~/.npm-global/bin" >> ~/.bashrc
답변
다른 답변은 시스템 디렉토리의 소유권 또는 권한을 특정 사용자에게 변경하도록 제안합니다. 나는 그렇게하지 않는 것이 매우 불쾌합니다. 이것은 매우 어색하고 전체 시스템을 망칠 수 있습니다!
다음은 다중 사용자를 지원하는보다 일반적이고 안전한 방법입니다.
노드 사용자를위한 새 그룹을 작성하고이 그룹에 필요한 사용자를 추가하십시오. 그런 다음 노드 종속 파일 / 디렉토리의 소유권을이 그룹으로 설정하십시오.
# Create new group
sudo groupadd nodegrp
# Add user to group (logname is a variable and gets replaced by the currently logged in user)
sudo usermod -a -G nodegrp `logname`
# Instant access to group without re-login
newgrp nodegrp
# Check group - nodegrp should be listed as well now
groups
# Change group of node_modules, node, npm to new group
sudo chgrp -R nodegrp /usr/lib/node_modules/
sudo chgrp nodegrp /usr/bin/node
sudo chgrp nodegrp /usr/bin/npm
# (You may want to change a couple of more files (like grunt etc) in your /usr/bin/ directory.)
이제 사용자로서 쉽게 모듈을 설치할 수 있습니다
npm install -g generator-angular
일부 모듈 (grunt, bower, yo 등)은 여전히 루트로 설치해야합니다. 이는 / user / bin /에서 심볼릭 링크를 생성하기 때문입니다.
편집하다
3 년 후 Node Version Manager 를 사용하는 것이 좋습니다 . 그것은 많은 시간과 문제를 안전하게 해줍니다.