NPM 8下本地安装Angular私有包触发GitHub验证问题求助
问题描述
- 环境升级:将Angular应用从Node 14(搭配NPM 6)升级至Node 16(搭配NPM 8)
- 本地包安装流程:将内部带作用域的私有包构建到
dist/my-private-package-name目录,执行npm install dist/my-private-package-name安装本地构建包 - 异常情况:NPM 6中正常安装无需登录,NPM 8下强制要求登录GitHub,终端报错如下:
npm ERR! code 128 npm ERR! An unknown git error occurred npm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/dist/my-private-package-name.git npm ERR! git@github.com: Permission denied (publickey). npm ERR! fatal: Could not read from remote repository. npm ERR! npm ERR! Please make sure you have the correct access rights npm ERR! and the repository exists. npm ERR! A complete log of this run can be found in: npm ERR! /Users/cn188854/.npm/_logs/2023-07-06T01_30_36_497Z-debug.log
- 补充:公司使用私有仓库存储包,无GitHub账号
解决方案
这是NPM 8对本地路径解析规则调整导致的问题,以下是可行的解决方法:
- 用
file:协议前缀强制识别本地路径:执行安装命令时明确加上file:前缀,避免NPM误将本地路径解析为Git仓库地址。命令示例:
如果在npm install file:./dist/my-private-package-namepackage.json的依赖中配置,同样需要加上前缀:"dependencies": { "@your-scope/my-private-package-name": "file:./dist/my-private-package-name" } - 修正私有包的
package.json配置:检查本地构建包的package.json中repository字段,若存在错误的GitHub仓库地址,直接删除或替换为公司私有仓库地址,防止NPM8根据该字段去远程拉取。 - 清除NPM缓存:执行缓存清理命令,排除旧缓存的干扰:
npm cache clean --force - 确认路径有效性:确保执行
npm install时的工作目录正确,dist/my-private-package-name是相对当前目录的有效路径,也可使用绝对路径避免歧义。
内容的提问来源于stack exchange,提问作者ineedtoknow
相关产品推荐
相关产品推荐

