스도 없이 npm 던지기 오류를 해결하는 방법
방금 nodejs.org 의 패키지를 통해 노드와 npm을 설치했는데, npm으로 무언가를 검색하거나 설치하려고 할 때마다 명령을 실행하지 않으면 다음과 같은 오류가 발생합니다.권한 문제인 것 같은데요?저는 이미 관리자입니다.
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
Node를 설치할 때 사용한 권한은 npm 디렉토리에 쓰는 것과 같은 작업을 할 때 필요합니다.npm link,npm install -g등).
루트 권한으로 Node.js 설치를 실행했을 수 있으므로 글로벌 패키지 설치에서 root로 지정하도록 요청합니다.
솔루션 1: NVM
권한으로 해킹하지 말고 Node.js를 올바르게 설치하십시오.
하지 않아야 , Node.js와 같은 것을 . 그렇지 않으면npm link,npm install -g동일한 권한이 필요합니다.
NVM(Node Version Manager)을 사용하면 루트 권한 없이 Node.js를 설치할 수 있으며 여러 버전의 노드를 설치하여 쉽게 실행할 수도 있습니다.개발에 완벽한 제품입니다.
- 노드를 제거합니다. 루트 권한이 필요할 수 있습니다.도움이 될 수도 있습니다.
- 그런 다음 이 페이지의 지침에 따라 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
"시스템 글로벌" 폴더에서 소유자를 변경하는 것은 해킹입니다.새로 설치할 때 "user-global" 프로그램에 이미 쓸 수 있는 위치를 사용하도록 NPM을 구성합니다.
npm config set prefix "${HOME}/npm"
그런 다음 해당 폴더를 경로에 추가해야 합니다.
export PATH="${PATH}:${HOME}/npm/bin"
이후의 문제를 방지하려면 사용하지 마십시오.
NPM 모듈에 대한 @ErikAndreas의 답변을 참조하십시오. 또한 세트가 포함된 @sindresorhus의 더 긴 단계별 가이드.$MANPATH.
조심하세요!!! 조심하세요!!! 조심하세요!!!
보안 위험 때문에 chown 또는 chmod는 해결책이 아닙니다.
대신 다음 작업을 수행합니다.
첫 번째 확인, npm이 가리키는 위치, 전화할 경우:
npm config get prefix
/usr이 반환된 경우 다음 작업을 수행할 수 있습니다.
mkdir ~/.npm-global
export NPM_CONFIG_PREFIX=~/.npm-global
export PATH=$PATH:~/.npm-global/bin
홈 되고 포인트는 anpm-Directory입니다.npm 게하.
이 변경 사항을 영구적으로 적용하려면 export-command를 .bashrc에 추가해야 합니다.
echo -e "export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=\$PATH:~/.npm-global/bin" >> ~/.bashrc
저는 Ecent(https://github.com/twitter/recess) 를 설치하여 부트스트랩 3용 CSS를 컴파일할 때 이것을 접했습니다.
오목부를 설치할 때:
-npm install recess -g
권잠용합니다야해에서 권한 .
homeNoah가 말한 것처럼 디렉토리:sudo chown -R `whoami` ~/.npm또에 대쓰권필다니요합한이기에 합니다.
node_modulesXilo가 말하는 것처럼 디렉토리가 계속 작동하지 않으면 다음을 시도합니다.sudo chown -R `whoami` /usr/local/lib/node_modules오류가 계속 표시되는 경우 다음과 같이 사용 권한을 수정해야 할 수도 있습니다.
sudo chown -R `whoami` /usr/local
이 게시물에 표시된 바와 같이 주의하십시오. /usr/local/Mac에 있는 경우에는 실제로 시스템 디어가 아니기 때문에 이 대답은 Mac 사용자에게 완벽하게 "안전"합니다.그러나 Linux를 사용하는 경우 아래의 Christopher Will의 답변을 참조하여 다중 사용자 친화적이고 안전한(그러나 더 복잡한) 솔루션을 확인하십시오.
시스템 디렉토리의 소유권 또는 권한을 특정 사용자에게 변경할 수 있는 다른 답변도 있습니다.저는 그렇게 하는 것이 매우 현명하지 않습니다. 이것은 매우 어색해질 수 있고 전체 시스템을 망칠 수 있습니다.
다중 사용자도 지원하는 보다 일반적이고 안전한 접근 방식이 있습니다.
노드 사용자에 대한 새 그룹을 만들고 이 그룹에 필요한 사용자를 추가합니다.그런 다음 노드 종속 파일/디렉토리의 소유권을 이 그룹으로 설정합니다.
# 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를 사용하는 것이 좋습니다.그것은 많은 시간과 수고를 덜어줍니다.
수정 방법에 대한 공식 문서npm install용한이 있는 EACCES오류는 https://docs.npmjs.com/getting-started/fixing-npm-permissions 에 있습니다.
드노사여용새설치후발다생니습했이문제가한로를 사용하여 를 새로 후 이 했습니다..pkg설치 관리자가 필요합니다.여기에 몇 가지 훌륭한 답변이 있지만, 저는 아직 npmjs.com 에 대한 링크를 보지 못했습니다.
옵션 1: 권한을 npm의 기본 디렉터리로 변경합니다.
npm의 디렉터리 경로를 찾습니다.
npm config get prefix
대부분의 시스템에서는 /usr/local이 됩니다.
경고: 표시된 경로가 /usr이면 옵션 2로 전환합니다.
npm 디렉터리의 소유자를 현재 사용자의 이름(사용자 이름!)으로 변경합니다.
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}그러면 npm 및 일부 다른 도구(lib/node_modules, bin 및 share)에서 사용하는 하위 폴더의 사용 권한이 변경됩니다.
옵션 2: npm의 기본 디렉터리를 다른 디렉터리로 변경
npm이 사용하는 기본 디렉터리(즉, /usr)의 소유권을 변경하지 않으려는 경우가 있습니다. 예를 들어 다른 사용자와 시스템을 공유하는 경우 문제가 발생할 수 있습니다.
대신 다른 디렉터리를 모두 사용하도록 npm을 구성할 수 있습니다.이 경우 홈 폴더에 숨겨진 디렉터리가 됩니다.
글로벌 설치를 위한 디렉토리를 만듭니다.
mkdir ~/.npm-global새 디렉터리 경로를 사용하도록 npm을 구성합니다.
npm config set prefix '~/.npm-global'~/.profile 파일을 열거나 생성하고 다음 행을 추가합니다.
export PATH=~/.npm-global/bin:$PATH명령줄로 돌아가서 시스템 변수를 업데이트합니다.
source ~/.profile
이 문제에 이 문제는 이지만, 이 문제는 사실입니다.~/.npm당의사소유합니다야해가 소유해야 합니다.npm모듈을 설치하지 않았습니다.
실제로 문제를 해결한 것은 다음 명령입니다.
npm config set prefix ~/.npm
export PATH="$PATH:$HOME/.npm/bin"
그러면 모든 글로벌 설치가 이 접두사로 지정됩니다.사용자가 이 디렉터리를 소유하고 있는지도 중요합니다.
여기서 더 많은 답이 필요한 것처럼 보이지만, 어쨌든..
Sindre Sorus는 OS X 및 Linux에서 sudo 없이 npm 패키지를 전 세계에 설치하는 가이드를 제공합니다. 사용 권한을 방해하지 않고 깔끔하게 설치하는 방법을 설명합니다.
다음은 지정된 사용자에 대해 전역적으로 패키지를 설치하는 방법입니다.
글로벌 패키지에 대한 디렉터리 만들기
mkdir "${HOME}/.npm-packages"나중에 .bashrc/.zshrc에서 사용하려면 이 디렉토리를 참조하십시오.
NPM_PACKAGES="${HOME}/.npm-packages"전역에 설치된 패키지를 저장할 위치를 npm으로 지정합니다.의 신의에서.
$HOME/.npmrc파일 추가:prefix=${HOME}/.npm-packages노드에서 찾을 수 있는지 확인합니다.다음을 .bashrc/.zshrc에 추가합니다.
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"설치된 바이너리와 man 페이지를 찾을 수 있습니다.다을추다니에 합니다.
.bashrc/.zshrc:PATH="$NPM_PACKAGES/bin:$PATH" # Unset manpath so we can inherit from /etc/manpath via the `manpath` # command unset MANPATH # delete if you already modified MANPATH elsewhere in your config MANPATH="$NPM_PACKAGES/share/man:$(manpath)"위 단계를 자동으로 수행하려면 npm-g_nosudo를 확인하십시오.
TL;DR
항상사는하를 사용합니다.
sudo -i또는sudo -H을 할 때npm install글로벌 패키지를 설치합니다.
를 할 때npm패키지를 사용자 홈 디렉토리에 다운로드합니다.때, 네가 sudo뛰면로,,npm파일을 동일한 디렉터리에 설치하지만 이제 루트에서 소유합니다.
그래서 이것은 사용해 본 모든 사람들에게 일어나는 일입니다.npm:
- 는 문제 일부로없설이를 사용하여 합니다.
npm install foo - 글벌패설을 사용하여 글로벌
sudo install -g foo-cli - 로컬패설키로 로컬 .
npm install bar - 에 좌절감을 느끼다
npm여러분이 만 하는 .chmod디렉토리
를 할 때-i또는-H홈는 sudo 션옵홈, 디토리렉는의당신이 .root의 홈 디렉토리입니다.를 모든글설패캐시다니합를지키로 ./root/.npm에 root- : - 소유파:/home/me/.npm.
상항사를 하세요.sudo -i또는sudo -H을 할 때npm install 및 의 패키지를 합니다.npm권한 문제가 해결될 것입니다.
영원히.
q.v. 이미 엉망이 된 것을 고친 것에 대해 받아들여진 대답npm.
npm install -g some package를 실행하면 루트/관리자로 명령을 다시 실행하라는 EACCES 오류가 발생할 수 있습니다.권한 문제입니다.
쉽게 고칠 수 있고, 터미널을 엽니다(응용프로그램 > 유틸리티 > 터미널).
sudo chown -R $USER /usr/local/lib/node_modules
나중에 몇 가지 문제가 생길 수 있기 때문에 sudo(sundpm-g 설치)와 함께 패키지 관리를 사용하지 않는 것을 강력히 추천합니다.
참조: http://foohack.com/2010/08/intro-to-npm/
sudo가 없으면 NPM 모듈이 글로벌하게 설치되지 않는 유사한 문제가 있었는데, 문제는 노드를 설치할 때 chris/leapparepo를 통해 sudo로 설치했다는 것입니다.
제 해결책은 노드를 제거한 다음 다음과 같은 방법으로 설치하는 것이었습니다.
nodejs.org #에서 최신 안정적인 노드 소스를 다운로드합니다. 이 경우 node-v0.10.20.tar.gz
tar -zxf node-v0.10.20.tar.gz #transpress 소스
cd node-v0.10.20 #압축되지 않은 폴더 입력
sudoown $USER -R /usr/local
./configure --syslog=/usr/local & & make & make 설치
PD: /usr/local 폴더의 소유권을 변경하지 않으려면 이미 소유한 곳에 설치할 수 있습니다.이 접근 방식의 문제는 나중에 node 명령을 사용할 수 있도록 설치 폴더를 bash 명령줄로 바인딩해야 한다는 것입니다.
mkdir ~/opt
./configure --syslog=~/opt & make & make & make install
echo 'export PATH=~/opt/bin:${PATH}' >> 현재 운영 체제에 따라 ~/.bashrc # 또는 ~/.profile 또는 ~/.bash_profile 또는 ~/.zshenv
이러한 접근 방식 중 하나를 사용하면 sudo를 사용하지 않고 다음을 수행할 수 있습니다.
npm install -g module_to_install
나의 경우, 실행만
sudo chown -R $(whoami) ~/.npm
작동하지 않습니다.그럼, 나도 실행합니다.
sudo chown -R $(whoami) /usr/lib/node_modules/
sudo chown -R $(whoami) /usr/bin/node
sudo chown -R $(whoami) /usr/bin/npm
그리고 모든 것이 잘 작동합니다!
문제: 사용자에게 디렉터리에 대한 올바른 권한 집합이 없습니다.
즉시 해결할 수 있는 방법은 sudo를 사용하여 npm 설치를 실행하는 것이지만 이 경우 동일한 오류가 발생하거나 설치가 잘못될 수 있습니다.
디렉토리 소유권을 변경하는 것은 좋은 선택사항이 아닙니다. 임시 패치입니다.
솔루션/제안:(공식 문서에서) npm의 기본 디렉토리 변경
앞으로 이동하기 전에 컴퓨터를 백업합니다.
(선택 사항)잘못 설치된 경우 먼저 제거합니다.
npm uninstall <package-name> # use sudo if you used it while installation
npm cache verify # or, npm cache clean for npm version below 5.x.x
글로벌 설치를 위한 디렉토리를 만듭니다.
mkdir ~/.npm-global새 디렉터리 경로를 사용하도록 npm을 구성합니다.
npm config set prefix '~/.npm-global'열또만기를 합니다.
~/.profile또는~/.bash_profile파일을 작성하고 다음 행을 추가합니다.export PATH=~/.npm-global/bin:$PATH명령줄로 돌아가거나 시스템 변수를 업데이트하거나 터미널을 다시 시작합니다.
source ~/.profile(선택 사항)테스트: sudo를 사용하지 않고 패키지를 전체적으로 다운로드합니다.
npm install -g jshint
Mac용(Christoper Will의 답변에서 채택됨)
Mac OS X 10.9.4
시스템 기본 설정 > 사용자 & 그룹 > (잠금 해제) > + : 를 누릅니다.
계정 > " > "그룹"
이름 : 파일 : nodegrp그룹을 만든 후 이 그룹에 포함할 사용자를 선택
-
sudocgrp -R nodegrp /usr/local/lib/node_modules/
sudocgrp nodegrp /usr/bin/node
npmsudocgrp nodegrp /usr/bin/npm
npmsudochown -R $(whoami):nodegrp ~/.npm
제 경우에는 ~/tmp의 허락 때문입니다.그래서 나는:
sudo chown -R $USER ~/tmp
그리고 괜찮아요!
문제:npm이 글로벌 패키지 및 명령을 저장하는 데 사용하는 디렉터리에 쓸 수 있는 권한이 없습니다.
솔루션:npm에 대한 권한을 허용합니다.
터미널 열기:
명령 + 스페이스바를 누른 다음 'terminal'을 입력합니다.
다음 명령을 입력합니다.
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
- 참고: 암호가 필요합니다.
이 솔루션은 필요한 디렉토리에만 권한을 부여하여 다른 디렉토리를 안전하고 안전하게 유지합니다.
가장 좋은 해결책은 npm 설명서에서 제공하는 것입니다.
Ubuntu의 경우 제안된 솔루션은 옵션 #2입니다.
간단한 단계:
글로벌 설치를 위한 디렉토리를 만듭니다.
mkdir ~/.npm-global
이 새 하도록 구성합니다.
npm config set prefix '~/.npm-global'
npm config get prefix접두사가 업데이트되었는지 여부를 확인할 수 있습니다.의 홈 디렉토리.
한 후 ~/.profile 파일을 엽니다.
export PATH=~/.npm-global/bin:$PATH
명령줄로 돌아가서 시스템 변수를 업데이트합니다.
source ~/.profile
2-4단계 대신 해당 ENV 변수를 사용할 수도 있습니다(예: ~/.profile을 수정하지 않으려는 경우).
NPM_CONFIG_PREFIX=~/.npm-global
Mac의 경우 권장 솔루션은 옵션 #3입니다.
Mac OS에서는 Homebrew 패키지 관리자를 사용하여 이 문제를 모두 방지할 수 있습니다.
brew install node
간단히 해 보다
npm rebuild
완료 후 일반 명령을 실행합니다.
NPM을 올바르게 구성하려면 다음 명령을 실행해야 합니다.
npm config set prefix '~/.npm_packages'
PATH=$PATH:$HOME/.npm_packages/bin; export PATH
에 경우.sudo chown -R $(whoami) ~/.npm작동하지 않거나 터미널이 아닌 명령 솔루션이 필요합니다.
문제는 사용자 계정에 node_modules 폴더에 대한 쓰기 권한이 없으므로 다음을 수행할 수 있습니다.
파더를열를누다니릅고인다니를 누릅니다.
cmd+shift+g, url, url, url, url, url과 함께 폴더로 이동합니다.경로를 .
/usr/local/lib/node_modules리 를 누 릅 니 다 고 그 ▁go 다를 누릅니다.을 오른쪽 버튼으로 합니다.
node_modules하고 폴더및선택을 합니다.Get Info까지 아래로 스크롤합니다.
sharing & permissions잠금을 해제하여 변경할 수 있습니다.
를 누릅니다.
+계정선택하세요.
Read & Write
를 설치하지 않고도 패키지를 할 수 .sudo 권한 .
아무도 이것에 대해 언급하지 않았지만 실제로 권한이나 별도의 npm 설치를 엉망으로 만들 필요는 없습니다. 명령에 다른 캐시 폴더를 지정하면 문제가 해결됩니다.
npm install --cache .npm
npm run build --cache .npm
로이생다니성이 됩니다..npmfolder
가장 좋은 옵션은 npm 설명서에 제시된 옵션으로, 먼저 를 실행하여 글로벌 node_modules가 기본적으로 설치된 위치를 확인하는 것입니다.npm config get prefix내가 Trusty에서 하는 것처럼 당신이 알게 되면,/usr제 방식대로 일을 망치지 않고 안전하게 소유할 수 있는 폴더로 변경하는 것이 좋을 수도 있습니다.
이렇게 하려면 시스템에서 새 폴더를 선택하거나 만듭니다.당신은 그것을 당신의 홈 디렉토리나, 나처럼, 아래에 가지고 싶을지도 모릅니다./usr/local저도 Mac 사용자이기 때문에 일관성을 유지할 수 있습니다(앞에 있는 컴퓨터에 따라 다른 장소를 조사할 필요가 없습니다).그렇게 하는 또 다른 좋은 이유는/usr/local폴더는 이미 PATH에 있을 수 있지만(PATH를 조작하고 싶지 않은 경우) 새로 만든 폴더는 그렇지 않을 수 있으므로 .bash-profile 또는 .bashrc 파일에서 직접 PATH에 추가해야 합니다.
를 히말해서모듈, 글벌의기변위다니경습간단했 했습니다.npm config set prefix '/usr/local'를 만들었습니다./usr/local/lib/node_modules됨) 및을 사용하여 npm에서 을 변경했습니다. (npm 서사 됨용다변에) npm 사및폴 대권경 니합한 을한더 에는용하 서사다 용여명령하을음에 ▁(▁command▁permpm다:▁changed 니합변it▁(▁usedissionspm▁the
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
이제 모든 모듈을 전체적으로 안전하게 설치할 수 있습니다.이것이 도움이 되길 바랍니다!
Windows 8.1에서 이 문제를 해결한 방법은 다음과 같습니다.
- nodejs 설치(일반적으로 C:\Program Files\nodejs)로 이동합니다.
- node_modules 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동합니다.
- 보안 탭을 클릭하고 고급
- 상단에 "Owner: SYSTEM"이 표시됩니다. 변경을 클릭합니다.
- 사용 권한을 부여할 사용자를 입력하고 확인을 클릭합니다.
- 고급 설정 "모든 하위 개체 권한 항목을 이 개체에서 상속 가능한 권한 항목으로 바꾸기" 아래쪽에 있는 확인란을 선택하고 확인을 클릭합니다.
- 필요한 모든 npm 설치/업데이트 수행
당신은 이것을 시도할 수 있습니다, 우분투와 맥에서 작동합니다.
sudo chown -R $(whoami) /usr/local/lib/node_modules
패키지를 루트로 전체적으로 설치하려고 하면 프로세스가 실패합니다.EUIDLOOKUP또는EACCES또는npm사용자 글로벌 패키지 사용 권한을 엉망으로 만듭니다.
문제를 이해하기 위해 이 문제를 읽는 것을 제안합니다.요컨대npm현재 프로세스의 EUID를 사용하여 다음과 같은 설치 스크립트를 실행하려고 합니다.root 그러실중원서사로용자래인을 실행하는 원래 로서.npm가 root를 사용할 합니다.sudoEUID가 설정됩니다.
그렇기 때문에 다음을 기반으로 한 @JHM16의 답변입니다.sudo작동해야 합니다.
그러나 컨테이너 빌드 내부에 패키지를 설치하는 경우에는 그렇지 않습니다.에 담기sudo종종 누락되지 않을 것입니다.빌드는 일반적으로 루트로 실행됩니다.
물론 컨테이너 빌드는 이러한 명령을 일반 사용자로 실행하고 모든 것을 해당 사용자로 빌드하도록 변경할 수 있습니다.그러나 이렇게 하면 빌드의 보안이 강화되지 않으며 상황에 따라 바람직하지 않을 수 있습니다.
컨테이너에빌는다같수생있다습니성할이음과드서다▁so.npm를 들어 설치 (예:yarn꾸러미
# setpriv --ruid 0 --euid 0 npm --unsafe-perm install -g yarn
setpriv는 모든 Linux 디스트리뷰터에서 사용할 수 있거나 쉽게 설치할 수 있는 소형 저수준 유틸리티입니다.
사실, 저도 같은 문제를 겪고 있었습니다.Ubuntu를 운영하고 있었습니다.제 문제는 제가 Ubuntu 공용 키를 잃어버렸기 때문에 발생합니다.심지어 제 시스템을 업데이트하지도 않았습니다.그것은 GPG 오류를 주고 있었습니다.이 경우 다음 명령을 사용하여 키를 되찾을 수 있습니다.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key in GPG error>
그 후에는 npm이 잘 작동합니다!
John Papa는 이 문제의 역사와 추론을 지적하고 확실한 해결책을 제시합니다.
John Papa의 단계는 다음과 같습니다.
- brew를 사용하여 npm 없이 노드 설치
- .bash_profile/.bashrc를 업데이트하여 npm 및 노드에 패키지를 설치하고 찾을 위치를 알려줍니다.
- brew를 사용하여 노드를 업데이트하고 npm을 사용하여 자체 업데이트
이것이 호기심 많은 사람들에게 도움이 되기를 바랍니다!
@Yves M.의 대답은 제 해결책과 매우 비슷했습니다.여기 제가 사용한 명령어들이 있는데, 그의 명령어와는 조금 달랐습니다.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
그런 다음 최신 버전을 쿼리합니다.
nvm ls-remote
그런 다음 최신 버전을 설치합니다.
nvm install YOUR_VERSION_HERE
예
nvm install v5.8.0
언급URL : https://stackoverflow.com/questions/16151018/how-to-fix-npm-throwing-error-without-sudo
'programing' 카테고리의 다른 글
| 코드에서 여백 속성 설정 (0) | 2023.05.17 |
|---|---|
| Git clone / pull "Store key in cache?" 시 지속적으로 동결됩니다. (0) | 2023.05.17 |
| 약속을 관찰 가능으로 변환 (0) | 2023.05.17 |
| bash 기록 완료를 변경하여 이미 연결된 작업을 완료하려면 어떻게 해야 합니까? (0) | 2023.05.17 |
| 엔터프라이즈 앱 배포가 iOS 7.1에서 작동하지 않음 (0) | 2023.05.17 |