【问题标题】:why using var {google} instead of var google in google.auth.OAuth为什么在 google.auth.OAuth 中使用 var {google} 而不是 var google
【发布时间】:2026-01-09 17:40:02
【问题描述】:

此代码来自 oauth nodesjs。 我想问一下为什么我们在 var google 周围使用“{}”?我也尝试在没有“{}”的情况下使用它,并得到错误 OAuth2 is undefined。我不明白这里发生了什么。

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

【问题讨论】:

    标签: google-api-nodejs-client


    【解决方案1】:

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

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

    您在此处查看的代码:

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

    与如下代码相同:

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

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

    【讨论】:

    • 非常感谢!!
    【解决方案2】:

    根据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();
    

    【讨论】:

      最近更新 更多