gpt4 book ai didi

node.js - 带有特殊字符的 npm 私有(private)注册表用户名

转载 作者:IT老高 更新时间:2023-10-28 23:06:34 24 4
gpt4 key购买 nike

我正在尝试访问托管在远程服务器中的私有(private) npm 注册表。我必须使用用户名和密码访问它。我这边没有代理。

但是,我使用的用户名和密码包含不安全的 URL 字符。我试过 addusernpmjsscl 但我无法配置凭据:

npm WARN Name may not contain non-url-safe chars

我尝试直接从命令行设置 NPM_USERNPM_PASS。我可以设置前者,但后者失败。即使我使用简单的密码并尝试:

npm login

由于 NPM_USER 有一个 @

,因此失败并出现同样的错误

我正在使用 npmrc 在公共(public)和私有(private)注册表之间切换。我想避免使用 Nexus/JFrog 之类的工具。

npm version - 4.0.5 and OS is Windows 7

我在这里错过了什么?

最佳答案

回顾一下,您的问题是您的私有(private)注册表使用电子邮件地址作为用户名,npm 命令行工具目前不支持。您需要一种方法来提供您的用户名,而无需运行 npm addusernpm login。我不知道您使用的是哪个注册表,但我遇到了与 Inedo's Proget 相同的问题.

编辑:我在 2021 年 3 月遇到了同样的问题,Azure Artifacts in Azure DevOps , 因为 npm 命令行工具仍然不允许在用户名中使用 @,而且 vsts-npm-auth 命令行工具 does not work on Linux or Mac .我对 Artifactory 也有同样的问题。

如果您使用私有(private)注册表并且使用范围来分隔不同的注册表,则可以创建如下所示的 .npmrc 文件:

#Settings for @SCOPENAME
@SCOPENAME:registry=https://DOMAIN/FEED/
//DOMAIN/FEED/:username=USER@DOMAIN
//DOMAIN/FEED/:_password=BASE64(PASSWORD)
//DOMAIN/FEED/:email=EMAIL_ADDRESS
//DOMAIN/FEED/:always-auth=true

#Settings for @OTHERSCOPENAME
@OTHERSCOPENAME:registry=...

下一点可能很重要,但这取决于您的注册表首选的提要网址:如果没有尾随 /,我无法使其正常工作,因此请注意尝试使用和不使用它.

获取密码的 base64 编码的一种简单方法是运行:

echo -n 'PASSWORD' | base64

编辑:对于某些注册表,例如 Azure Artifacts ,您需要使用个人访问 token 而不是普通密码。查找有关如何创建 token 的注册表说明。

编辑:如果您只使用一个注册表,也可以使用没有范围的 .npmrc 文件:

# Global settings
registry=https://DOMAIN/FEED/
//DOMAIN/FEED/:username=USER@DOMAIN
//DOMAIN/FEED/:_password=BASE64(PASSWORD)
//DOMAIN/FEED/:email=EMAIL_ADDRESS
//DOMAIN/FEED/:always-auth=true

关于node.js - 带有特殊字符的 npm 私有(private)注册表用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41543439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com