Nexus 3.0.1-01を実行しており、MavenリポジトリとNPMレジストリの両方をホストするために使用しています。 NPMには、npmjs.orgのローカルミラー、ローカルNPMレジストリ、および2つを組み合わせたグループがあります...
私はこれをnpmで内部的に使用しており、npm-publicグループをレジストリとして使用でき、これはうまく機能しています。したがって、Nexusを使用してnpmjsをミラーリングできます。
次のステップは、ローカルで作成されたnpmモジュールを取得し、npm-releases(Nexusインスタンス上)に公開して、これらのモジュールを配信チーム間で共有できるようにすることです。パッケージを構築することができましたが、npm packは動作しているようです。
Npm adduserを実行して、Nexus資格情報をnpm環境に提供しました。 Nexus Webアプリにログインするときに使用するのと同じユーザー名/パスワードを使用しており、ユーザーに管理者ロールが割り当てられています(したがって、すべての権限が必要です)。 .npmrcファイルで資格情報を確認できます
私のレジストリ値は、ミラーとローカルレジストリを組み合わせたnpm-publicgroupのままです。デプロイしようとしているモジュールのpackage.jsonに、ローカルグループのレジストリ(パブリックグループではない)のURLを指す「publishConfig」セクションがあることを確認しました。
しかし、それにもかかわらず、「npm publish」を呼び出すと401エラーが発生します...
Npm-debug.logを見ると、HTTP PUT呼び出しを呼び出して、アセンブルされたtgzファイルをレジストリにプッシュしようとしていることがわかります。これは401エラーを返しています。
サーバーのshiroパッケージでデバッグロギングを有効にしましたが、認証が必要だと思うメッセージが1つしか表示されません
2016-09-13 08:56:28,590+1000 DEBUG [qtp1257823896-4030] *UNKNOWN org.Apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter - Authentication required: sending 401 Authentication challenge response.
ドキュメントによると、私はするべきことをすべてやりました(npmユーザーを追加)が、npmモジュールをローカルリポジトリに正常にデプロイすることができません。
Npm publishを呼び出すときに使用する必要がある追加オプションはありますか?サーバーにホストされているnpmリポジトリに公開する必要がある追加の設定はありますか?デフォルト値を使用して作成しました。ホストされているnpmレジストリへのデプロイを妨げるステップを見逃していませんか?
私は現在立ち往生しているので、どんな助けも大歓迎です。
さらに@EdHの回答に加えて、.npmrcの形式が変更されたため、base64でエンコードされた_authが機能しなくなることを発見しました...そして、リポジトリにログインしてトークンを作成する必要があります。
古い.npmrc
registry=https://Host/repo
_auth=12afdjsljl123213
新しい.npmrc
//Host/repo/:_authtoken=uuidOfToken
@Danielの答えに加えて、 ユーザー資格情報の追加/ npmへのログイン の場合、レジストリURLの末尾にスラッシュを付けることはできません。
悪い:
npm adduser --registry=https://repo.localhost/repository/npm-internal/
良い:
npm adduser --registry=https://repo/repository/npm-internal
また、ログインを自動化する場合(つまり、非対話型)、 npm-cli-login という優れたツールを使用しました。
npm-cli-login -u admin -p admin123 -e [email protected] -r https://repo/repository/npm-internal
私はこの投稿が数年前のものであることに気づきましたが、この問題に何時間も苦労していたので、他の多くの場所では見られなかったものがようやく見つかりました。問題は、_authToken
ファイル内で.npmrc
を指定していなかったことです。以下に示すようにこれを追加すると問題が解決し、401エラーなしでnpmコマンドを正常に実行できました。
.npmrc
registry=https://test.repo.com/repository/npm-group/
//test.repo.com/repository/npm-group/:_authToken=NpmToken.${NPM_TOKEN}