Node 22.9.0下Angular项目SonarQube Scanner执行失败求助
解决思路
- 检查Node.js TLS协议兼容性:Node 22默认收紧了TLS协议支持,可能SonarQube服务器使用的协议版本不在Node 22的默认允许范围内。执行命令
NODE_OPTIONS="--tls-min-v1.2" sonar-scanner测试,若能正常运行,说明是协议兼容问题,可将该环境变量加入shell配置文件(如/.bashrc、/.zshrc)长期生效。 - 确认sonar-scanner版本与Node 22兼容:nvm管理下不同Node版本的全局包是独立的,切换到Node 22后重新全局安装最新版sonar-scanner:
npm install -g sonar-scanner,再执行分析测试。同时对比Node 18和Node 22下sonar-scanner --version的输出,确保版本一致或使用适配Node 22的新版本。 - 验证认证信息的有效性与加载:在Node 22环境下,直接输出环境变量
echo $SONAR_TOKEN(Linux/macOS)或echo %SONAR_TOKEN%(Windows),确认认证token能被正确读取;也可在执行sonar-scanner时显式指定token:sonar-scanner -Dsonar.login=你的认证token,排除配置文件读取或环境变量继承问题。 - 排查axios版本兼容性:报错来自axios,进入Node 22全局sonar-scanner的依赖目录(可通过
npm list -g sonar-scanner找到路径),查看axios版本。若版本较旧,尝试手动替换为兼容Node 22的axios版本(如最新稳定版),或重新安装sonar-scanner以获取适配的依赖。 - 查看SonarQube服务器日志:登录SonarQube后台,查看访问日志中对应401请求的详细记录,确认是认证头缺失、token格式错误还是其他请求参数问题,进一步定位根因。
- 检查网络配置一致性:对比Node 18和Node 22环境下的代理环境变量(
HTTP_PROXY、HTTPS_PROXY),确保网络访问路径一致,排除代理配置差异导致的认证请求失败。
内容的提问来源于stack exchange,提问作者eeml
相关产品推荐
相关产品推荐

