Angular9执行npm i安装angularx-social-login报错解决方案
Angular 9环境下无法安装angularx-social-login是三个问题导致的:
package.json的dependencies中存在无效依赖"-": "0.0.1",这是之前执行npm命令时参数书写错误误安装的空包,会直接干扰依赖树解析逻辑- 项目本身存在跨大版本的Angular生态依赖:核心@angular/*包为9.x版本,但@angular/cdk、@angular/material是10.x版本,@angular/google-maps是11.x版本,本身就不满足npm默认的peer依赖严格校验规则,会直接阻断安装流程
- 本地npm缓存可能存在损坏,导致包拉取、解压环节抛出异常
按顺序执行以下操作即可完成安装:
清理无效配置和残留文件
打开项目根目录下的package.json,找到dependencies节点下的"-": "0.0.1",行,直接删除后保存文件。
之后在项目根目录执行命令,删除残留的依赖目录和锁文件:rm -rf node_modules package-lock.json如果是Windows环境执行上述命令报错,直接手动删除项目根目录下的
node_modules文件夹、package-lock.json文件即可。清理npm缓存
执行命令清除本地损坏的缓存,避免缓存导致的安装异常:npm cache clean --force安装版本匹配的依赖包
注意:Angular 9 兼容的angularx-social-login稳定版本为3.5.7,不要安装最新版,4.x以上版本仅支持Angular 11+,会直接出现编译报错
执行安装命令时添加跳过peer依赖校验的参数,适配项目现有跨版本依赖的环境:npm install angularx-social-login@3.5.7 --save --legacy-peer-deps重装全量项目依赖
执行命令完成所有依赖的安装,同样跳过peer依赖校验:npm install --legacy-peer-deps
安装完成后打开package.json,如果dependencies节点下出现"angularx-social-login": "^3.5.7"的条目,就说明安装成功。后续正常按照库的使用说明,在根模块引入SocialLoginModule、配置Facebook AppID对应的登录提供者即可接入认证功能。
补充:你之前尝试安装的
angular-9-social-login是第三方fork的过时分支,存在Facebook登录回调不触发的已知bug,不建议使用,官方3.5.7版本是原生适配Angular9的稳定版本,可直接用于生产环境。
内容的提问来源于stack exchange,提问作者Maca Eco Ayuso

