为什么在 google.auth.OAuth 中使用 var {google} 而不是 var google

why using var {google} instead of var google in google.auth.OAuth

此代码来自oauth nodejs。 我想问一下为什么我们在 var google 周围使用'{}'?我也尝试在没有“{}”的情况下使用它,但出现错误 OAuth2 未定义。我不明白这里发生了什么。

var {google} = require('googleapis');
var OAuth2 = google.auth.OAuth2;

根据 Changelog from google-api-nodejs-client,从 V26.0.0 开始有一些变化 您必须在您的代码中实现,正是提到了您遇到的问题.我也花了一些时间来弄清楚这个...

BREAKING CHANGE: This library is now optimized for es6 modules. In previous versions you would import the library like this:

const google = require('googleapis');

In this and future versions, you must use a named import:

const {google} = require('googleapis');

You may also reference the type to instantiate a new instance:

const {GoogleApis} = require('googleapis');
const google = new GoogleApis();

为这个答案补充一点——这就是所谓的解构赋值。您可以在这里阅读它们:

http://2ality.com/2015/01/es6-destructuring.html

您在此处查看的代码:

const {google} = require('googleapis');

与如下代码相同:

const google = require('googleapis').google;

这只是在 es6 中添加的一个方便 shorthand。当我们转向 ES 模块时,我们对 googleapis 包进行了更改,这些模块不能很好地使用 export=foo 样式语法。希望这对您有所帮助!