You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在同一npm注册表为不同作用域配置不同登录令牌?

解决同一npm注册表下不同作用域配置不同AuthToken的问题

你的问题出在配置格式上——你把registry地址和_authToken拼接在了同一行,npm无法正确解析这个格式,自然会返回405错误。下面是正确的配置方式:

正确的.npmrc配置格式

你需要分别为每个作用域声明registry,然后针对同一注册表路径,为每个作用域单独指定authToken,格式如下:

# 先声明两个作用域都指向npm官方注册表
@scope1:registry=https://registry.npmjs.org/
@scope2:registry=https://registry.npmjs.org/

# 为每个作用域单独配置对应的authToken
//registry.npmjs.org/:_authToken@scope1=${TOKEN_1}
//registry.npmjs.org/:_authToken@scope2=${TOKEN_2}

为什么这个格式有效?

npm支持通过在_authToken后添加@作用域后缀的方式,为同一注册表的不同作用域绑定独立的认证令牌。这样当npm请求@scope1下的包时,会自动使用TOKEN_1,请求@scope2的包时使用TOKEN_2

用命令行配置更省心

如果你不想手动编辑.npmrc文件,可以用npm config命令直接设置:

# 配置scope1的registry和令牌
npm config set @scope1:registry https://registry.npmjs.org/
npm config set //registry.npmjs.org/:_authToken@scope1 ${TOKEN_1}

# 配置scope2的registry和令牌
npm config set @scope2:registry https://registry.npmjs.org/
npm config set //registry.npmjs.org/:_authToken@scope2 ${TOKEN_2}

配置完成后,你可以运行npm config list查看配置是否生效,然后尝试安装对应作用域的包验证认证是否正常。

内容的提问来源于stack exchange,提问作者fragile_frogs

火山引擎 最新活动