无法安装已发布至GitLab Registry的npm包
问题原因
你执行npm install时,npm默认去官方npmjs.org拉取包,但你的包发布在GitLab Package Registry,所以找不到导致404。
解决方法
方法1:安装时临时指定GitLab Registry
直接在安装命令后追加GitLab的包仓库地址,注意替换<你的项目ID>为你发布包的GitLab项目ID(项目主页底部或设置里能找到):
npm install medusa-plugin-static-pages-testing --registry=https://gitlab.com/api/v4/projects/<你的项目ID>/packages/npm/
如果是私有项目,还需要加上认证令牌,命令改成:
npm install medusa-plugin-static-pages-testing --registry=https://gitlab.com/api/v4/projects/<你的项目ID>/packages/npm/ --//gitlab.com/api/v4/projects/<你的项目ID>/packages/npm/:_authToken=<你的GitLab访问令牌>
访问令牌需要在GitLab个人设置里生成,权限勾选read_api和read_repository。
方法2:配置项目级.npmrc(推荐)
在需要安装包的项目根目录创建.npmrc文件,写入以下内容(替换占位符):
# 如果你的包有scope(比如@your-group/medusa-plugin...),用下面这行 @<你的组名>:registry=https://gitlab.com/api/v4/packages/npm/ # 如果包没有scope,直接指定该包的registry medusa-plugin-static-pages-testing:registry=https://gitlab.com/api/v4/projects/<你的项目ID>/packages/npm/ # GitLab包仓库认证 //gitlab.com/api/v4/packages/npm/:_authToken=<你的GitLab访问令牌>
配置后直接执行npm install medusa-plugin-static-pages-testing即可。
方法3:全局配置npm(不推荐,影响所有项目)
如果想让所有npm安装都默认走GitLab Registry,执行以下命令(替换令牌):
npm config set registry https://gitlab.com/api/v4/packages/npm/ npm config set //gitlab.com/api/v4/packages/npm/:_authToken=<你的GitLab访问令牌>
但这样会导致安装官方包也走GitLab,可能出现其他问题,不建议使用。
额外检查
- 确认GitLab里的包名、版本和你安装时的完全一致,别打错字
- 检查GitLab项目是否是公开的,如果是私有项目,必须配置认证令牌否则无法访问
内容的提问来源于stack exchange,提问作者abdaal hassan
相关产品推荐
相关产品推荐

