节点google api没有返回'request'对象

时间:2016-03-14 22:04:16

标签: node.js google-api

我正在尝试使用node google api下载一些excel文件。我找到了this示例,但没有看到相同的结果。

运行类似代码时,我收到Cannot read property 'pipe' of undefined

var output = fs.createWriteStream("./output/accounts/2016/" + file.name);

var test = drive.files.get({
  fileId: file.gID,
  alt: 'media'
}).pipe(output);

我尝试记录get的返回值,我刚刚获得undefined

var output = fs.createWriteStream("./output/accounts/2016/" + file.name);

var test = drive.files.get({
  fileId: file.gID,
  alt: 'media'
});

console.log(test);

我可以使用回调格式获取文件的文本。由于excel格式,下面的代码运行并打印出一堆特殊字符。使用fs.writeFile(...)保存然后使用excel打开不会导致格式正确,我仍然在任何地方都有特殊字符,所有数据都在A列中。

var test = drive.files.get({
  fileId: file.gID,
  alt: 'media'
}, function (err, contents) {
    console.log(contents);
});

有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:0)

经过一些更多的研究,我在github上发现了一些与之相关的旧问题。我想对OAuth2的更新破坏了刷新令牌,并且需要手动刷新令牌以便返回Response对象。

来源:https://github.com/google/google-api-nodejs-client/issues/381

以下是最终为我工作的代码:

var jwtClient = new google.auth.JWT(...);
jwtClient.refreshAccessToken(function(err, tokens) {
  var test = drive.files.get({
    fileId: googleFileId,
    alt: 'media'
  }).on('end', function() {
    finished.call();
  }).on('error', function(err) {
    process.exit(err);
  }).pipe(output);
});