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

时间:2018-03-22 09:19:21

标签: google-api-nodejs-client

此代码来自oauth nodesjs。 我想问为什么我们使用' {}' var google周围?我也试过没有' {}'并得到错误OAuth2未定义。我无法理解这里发生的事情。

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

2 个答案:

答案 0 :(得分:1)

根据Changelog from google-api-nodejs-client,您必须在代码中实现 V26.0.0以后的一些更改,正好提到了您遇到的问题。我还花了一些时间才想出这个......

  

BREAKING CHANGE:此库现已针对es6模块进行了优化。在以前的版本中,您可以像这样导入库:

const google = require('googleapis');
  

在此版本和将来版本中,您必须使用命名导入:

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

您也可以引用类型来实例化新实例:

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

答案 1 :(得分:1)

为此答案添加一点 - 这就是所谓的解构分配。你可以在这里阅读它们:

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

您在此处查看的代码:

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

与看起来像这样的代码相同:

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

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