NPM 로그인이 작동하지 않음
6466 단어 nodenpmbugjavascript
TL;DR
This solution은
Node v16.13.0
및 NPM v8.1.3
에서 작동합니다.소개
NPM이 수많은 node_modules를 다운로드하고 그다지 장황하지 않은 로그를 제공하지 않는 한 NPM을 사용하여 작업하는 것을 항상 싫어하지는 않습니다. 오늘 제 동료와 저는 그다지 흥미롭지 않고 디버그하기 어려운 NPM 로그인 버그를 발견했습니다. 근본 원인을 찾는 데 약 1시간이 걸립니다.
이 기사에서는 동일한 문제가 발생할 경우를 대비하여 솔루션을 작성합니다.
현재 상태
현재 회사에서는
Nexus3
를 NPM 모듈의 개인 저장소로 사용합니다. 또한 로컬 컴퓨터에서 작업할 때 Node v12.22.4
및 NPM v8.1.3
를 사용합니다. Nexus 저장소에 로그인하기 위해 다음 형식으로 .npmrc
를 사용합니다.@myorg:registry=https://repo.myorg.com/repository/npm-private
always-auth=true
_auth={{ base64 of username:password redacted here }}
그리고 우리는 그것에 만족합니다. 문제 없습니다.
문제
동료가
Node v16.13.0
를 사용하려고 할 때 문제가 발생합니다. npm i @myorg/utils
명령이 실행되면 401
라고 시작합니다.npm ERR! code E401
npm ERR! Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository Manager"
npm ERR! A complete log of this run can be found in:
npm ERR! /home/user/.npm/_logs/2021-11-18T06_37_02_136Z-debug.log
솔루션 찾기
Nexus 3
가 Node v16
와 호환되지 않는 것인지 궁금합니다. 그래서 Nexus 저장소에 다시 로그인을 시도했습니다.$ npm login --registry=https://repo.myorg.com/repository/npm-private/ --scope=@myorg/
npm notice Log in on https://repo.myorg.com/repository/npm-private/
Username: {{ username }}
Password:
Email: (this IS public) {{ [email protected] }}
Logged in as {{ username }} on https://repo.myorg.com/repository/npm-private/.
자, 이제 로그인했습니다. 하지만
npm whoami
를 사용하여 확인하자마자 다시 401
라고 표시됩니다.$ npm whoami --registry=https://repo.myorg.com/repository/npm-private/
npm ERR! code E401
npm ERR! Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository Manager"
npm ERR! A complete log of this run can be found in:
npm ERR! /home/user/.npm/_logs/2021-11-18T06_49_38_788Z-debug.log
그런 다음 내
.npmrc
파일 내용을 확인하고 Node v16의 형식이 .npmrc
와 다른 것으로 나타났습니다. 내 현재.npmrc
파일 내용은 다음과 같습니다.//repo.myorg.com/repository/npm-private/:_authToken=NpmToken.{{ uuid redacted here }}
정말 이상한 형식입니다. 범위를 반영하지 않으며 여전히
_authToken
형식 자체와 혼동됩니다. 물론 좋은 개발자로서 Google의 모든 키워드에서 버그를 검색하는 빠른 손이 필요합니다. 그리고 this comment 에 의해 @apottere 을 찾았습니다. 그래서 .npmrc
파일 내용을 수동으로 다시 작성하려고 했습니다. 이것은 내 현재.npmrc
파일 내용입니다.//repo.myorg.com/repository/npm-private/:always-auth=true
//repo.myorg.com/repository/npm-private/:_auth={{ base64 of username:password redacted here }}
유망해 보여서 다시 실행
npm i @myorg/utils
을 시도했습니다. 그리고 그것은 실패했습니다.$ npm install @myorg/utils
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@myorg%2futils - Not found
npm ERR! 404
npm ERR! 404 '@myorg/utils@^0.2.0' is not in this registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/user/.npm/_logs/2021-11-18T07_04_32_033Z-debug.log
예, 찾을 수 없습니다.
.npmrc
파일에 스코프가 반영되지 않아서 그런 줄 알았습니다.해결책
그래서 옛날 방식으로 내용을 수동으로 다시 작성해 보았습니다. 이것은 내 현재 및 최종
.npmrc
파일 내용입니다.@myorg:registry=https://repo.myorg.com/repository/npm-private
//repo.myorg.com/repository/npm-private/:always-auth=true
//repo.myorg.com/repository/npm-private/:_auth={{ base64 of username:password redacted here }}
마지막으로
npm i @myorg/utils
명령을 다시 시도했는데 작동했습니다.$ npm install @myorg/utils
added 1 package, and audited 2 packages in 2s
found 0 vulnerabilities
결론
따라서 계속해서
npm login
명령이었습니다. 여전히 새 형식.npmrc
에 대한 전체 문서를 찾을 수 없습니다. 문서를 놓쳤거나 문서가 없을 수도 있습니다. 동일한 문제가 있는 경우 이 문서를 찾아 문제를 해결할 수 있기를 바랍니다.읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(NPM 로그인이 작동하지 않음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/clavinjune/npm-login-not-working-2obp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)