【发布时间】:2026-01-09 17:40:02
【问题描述】:
此代码来自 oauth nodesjs。 我想问一下为什么我们在 var google 周围使用“{}”?我也尝试在没有“{}”的情况下使用它,并得到错误 OAuth2 is undefined。我不明白这里发生了什么。
var {google} = require('googleapis');
var OAuth2 = google.auth.OAuth2;
【问题讨论】:
此代码来自 oauth nodesjs。 我想问一下为什么我们在 var google 周围使用“{}”?我也尝试在没有“{}”的情况下使用它,并得到错误 OAuth2 is undefined。我不明白这里发生了什么。
var {google} = require('googleapis');
var OAuth2 = google.auth.OAuth2;
【问题讨论】:
为这个答案添加一点 - 这就是所谓的解构赋值。你可以在这里阅读它们:
http://2ality.com/2015/01/es6-destructuring.html
您在此处查看的代码:
const {google} = require('googleapis');
与如下代码相同:
const google = require('googleapis').google;
这只是 es6 中添加的一种方便的简写。当我们转向 ES 模块时,我们在 googleapis 包中进行了更改,这些模块不能很好地与export=foo 样式语法配合使用。希望这会有所帮助!
【讨论】:
根据Changelog from google-api-nodejs-client,从V26.0.0 开始 有一些您必须在您的代码中实现的更改,正是提到了您遇到的问题。我也花了一些时间来弄清楚这个......
重大更改:此库现在针对 es6 模块进行了优化。在以前的版本中,您可以像这样导入库:
const google = require('googleapis');
在此版本和未来版本中,您必须使用命名导入:
const {google} = require('googleapis');
你也可以引用类型来实例化一个新的实例:
const {GoogleApis} = require('googleapis');
const google = new GoogleApis();
【讨论】: