Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Google API重命名导入的变量产生错误_Node.js_Jwt_Google Auth Library - Fatal编程技术网

Node.js Google API重命名导入的变量产生错误

Node.js Google API重命名导入的变量产生错误,node.js,jwt,google-auth-library,Node.js,Jwt,Google Auth Library,我正在使用googleapis节点包授权JWT令牌。我遵循这个链接中的示例:如果我更改导入包的变量名,它将产生一个错误 为什么示例1可行,但示例2产生以下错误: 例1 'use strict' const { google } = require('googleapis') const scopes = 'https://www.googleapis.com/auth/analytics.readonly' const jwt = new google.auth.JWT( process

我正在使用googleapis节点包授权JWT令牌。我遵循这个链接中的示例:如果我更改导入包的变量名,它将产生一个错误

为什么示例1可行,但示例2产生以下错误: 例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)
    }
  )
})
这种语法

const { google } = require('googleapis')
称为对象分解

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

与此相同:

const google = require('googleapis').google;
var googleapi = require('googleapis').googleapi;
所以当你这样做的时候:

const { googleapi } = require('googleapis')
与此相同:

const google = require('googleapis').google;
var googleapi = require('googleapis').googleapi;
问题是,
googleapis
模块没有导出名为
googleapi
的属性

如果您确实希望名称为
googleapi
,可以执行以下操作:

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

甚至这个:

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

?谢谢你的解释!不客气。请随意接受它作为正确答案;)