【问题标题】:Google API renaming imported variable yields errorGoogle API 重命名导入的变量会产生错误
【发布时间】:2019-08-01 20:13:37
【问题描述】:

我正在使用 googleapis 节点包授权 JWT 令牌。我正在关注此链接中的示例:Here 如果我更改导入包的变量名,则会产生错误。

为什么示例 1 有效,但示例 2 产生以下错误:

const jwt = new googleapi.auth.JWT(
                        ^
TypeError: Cannot read property 'auth' of undefined

示例 1

'use strict'

const { google } = require('googleapis')

const scopes = 'https://www.googleapis.com/auth/analytics.readonly'
const jwt = new google.auth.JWT(
  process.env.CLIENT_EMAIL,
  null,
  process.env.PRIVATE_KEY,
  scopes
)
const view_id = 'XXXXXXX'

jwt.authorize((err, response) => {
  google.analytics('v3').data.ga.get(
    {
      auth: jwt,
      ids: 'ga:' + view_id,
      'start-date': '30daysAgo',
      'end-date': 'today',
      metrics: 'ga:pageviews'
    },
    (err, result) => {
      console.log(err, result)
    }
  )
})

示例 2

'use strict'

const { googleapi } = require('googleapis')

const scopes = 'https://www.googleapis.com/auth/analytics.readonly'
const jwt = new googleapi.auth.JWT(
  process.env.CLIENT_EMAIL,
  null,
  process.env.PRIVATE_KEY,
  scopes
)
const view_id = 'XXXXXXX'

jwt.authorize((err, response) => {
  googleapi.analytics('v3').data.ga.get(
    {
      auth: jwt,
      ids: 'ga:' + view_id,
      'start-date': '30daysAgo',
      'end-date': 'today',
      metrics: 'ga:pageviews'
    },
    (err, result) => {
      console.log(err, result)
    }
  )
})

【问题讨论】:

标签: node.js jwt google-auth-library


【解决方案1】:

这个语法

const { google } = require('googleapis')

称为对象解构。

它实际上做的是加载所需的模块并从该模块获取google 属性并将其分配给一个也称为google 的变量。

同理:

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

所以当你这样做时:

const { googleapi } = require('googleapis')

同理:

var googleapi = require('googleapis').googleapi;

问题是googleapis 模块不会导出名为googleapi 的属性。

如果你真的希望名字是googleapi,你可以这样做:

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

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

甚至这个:

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

【讨论】:

  • 感谢您的精彩解释!
  • 不客气。随意接受它作为正确答案;)
猜你喜欢
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 2018-07-08
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多