Gmail API Node.js快速启动报错:google.gmail不是函数
解决
TypeError: google.gmail is not a function错误 这个问题大概率是你安装的googleapis包版本和官方示例的写法不匹配导致的——Gmail API的客户端调用方式在googleapis v40版本之后发生了变化,而你的Node.js v8.9.4属于较旧版本,可能和最新版googleapis存在兼容性问题。下面给你两种可行的解决思路:
方案一:降级googleapis到兼容旧写法的版本
官方Quickstart示例原本是基于旧版googleapis编写的,你可以安装指定版本来匹配原代码:
- 先卸载当前的
googleapis:
npm uninstall googleapis
- 安装v39版本(这个版本完全兼容原示例的调用方式):
npm install googleapis@39
- 重新运行你的代码,
var gmail = google.gmail('v1');这一行就可以正常执行了。
方案二:修改代码适配新版googleapis(如果不想降级依赖)
如果你想保留最新版的googleapis,需要调整客户端的初始化代码:
把原来的:
var gmail = google.gmail('v1');
替换成:
var gmail = google.gmail({ version: 'v1', auth: auth });
这里的auth就是你授权后得到的认证对象,确保它已经正确初始化并传入。
另外需要注意:你的Node.js v8.9.4版本比较老旧,最新版的googleapis可能已经不再支持这个版本的Node.js,如果选择这个方案后仍然出现其他兼容性错误,建议优先考虑方案一,或者升级你的Node.js版本到v12及以上(当然这一步可选)。
内容的提问来源于stack exchange,提问作者grabbag
相关产品推荐
相关产品推荐

