Node.js调用Google Calendar API报PEM routines:get_name:no start line错误求解
问题排查与修复方案
核心错误原因
你在初始化JWT认证客户端时传参错误:google.auth.JWT的第三个入参要求传入PEM格式的私钥内容(对应服务账号凭证里的private_key字段),你当前传入的是CREDENTIALS.private_key_id(私钥ID,不是私钥本身),导致PEM解析模块无法识别合法的私钥格式,抛出error:0909006C:PEM routines:get_name:no start line错误。
修复步骤
- 修正JWT实例化代码
将原有JWT初始化行替换为如下内容:
// 替换第三个入参为private_key,而非private_key_id const auth = new google.auth.JWT( CREDENTIALS.client_email, null, CREDENTIALS.private_key, SCOPES );
- 处理.env存储私钥的转义问题
若修正后仍报相同错误,说明你将整个凭证JSON存入.env文件时,私钥中的换行符\n被转义为了普通字符串\\n,可通过如下代码手动修复换行符:
const fixedPrivateKey = CREDENTIALS.private_key.replace(/\\n/g, '\n'); const auth = new google.auth.JWT( CREDENTIALS.client_email, null, fixedPrivateKey, SCOPES );
- 可选后续问题规避(非本次报错原因,避免后续调用失败)
- 你当前事件的
dateTime字段传入的是Date对象,Google Calendar API要求该字段为ISO格式字符串,可在传参时调用.toISOString()方法转换 - 时区参数需使用IANA规范格式,将
United Kingdom替换为Europe/London
- 你当前事件的
内容的提问来源于stack exchange,提问作者Carla
相关产品推荐
相关产品推荐

