执行ng serve出现PEM routines错误,ng test正常,求解决方案
解决
ng serve 报错 error:0909006C:PEM routines:get_name:no start line 可能的修复步骤:
检查HTTPS配置问题
如果项目在angular.json里启用了HTTPS(serve.options.https设为true),大概率是证书文件异常:- 打开
angular.json,定位到projects.[你的项目名].architect.serve.options,确认HTTPS配置 - 检查
sslCert和sslKey指定的文件路径是否正确,文件内容必须是标准PEM格式(开头有-----BEGIN CERTIFICATE-----/-----BEGIN PRIVATE KEY-----,结尾有对应结束标记) - 若证书损坏或格式错误,重新生成本地开发证书:
之后更新ng generate sslangular.json里的证书路径,或者直接删除自定义证书配置,让Angular自动使用默认证书
- 打开
彻底清理依赖与缓存
执行更彻底的依赖清理操作,覆盖常规npm i的局限:rm -rf node_modules package-lock.json npm cache clean --force npm install验证Node.js版本兼容性
部分Node.js版本和Angular CLI版本不兼容会引发SSL解析问题:- 查看
package.json的engines字段确认项目要求的Node版本 - 用nvm等版本管理工具切换到对应版本,再运行
ng serve
- 查看
排查系统证书存储
系统根证书异常也可能导致Node.js解析PEM失败:- Linux:执行
apt install ca-certificates更新系统证书包,检查/etc/ssl/certs目录下的证书完整性 - macOS:打开钥匙串访问,排查损坏的证书,尝试修复或重新导入根证书
- Linux:执行
补充说明
由于ng test能正常运行,说明测试环境未启用HTTPS或使用了不同的证书配置,重点聚焦serve环境的HTTPS相关设置即可。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

