Ric*_*nek 5 google-api node.js google-drive-api
这是我的代码:
const fs = require('fs');
const { google } = require('googleapis');
const Auth = require('../authorization/auth_drive/auth');
// get data
var gotData = function downloadFiles(fileId, callback) {
let content = fs.readFileSync('./GEARS/authorization/client_secret.json');
Auth(JSON.parse(content), (auth) => {
//const returnData = [];
const drive = google.drive({ version: 'v3', auth });
const fileId = '';
const dest = fs.createWriteStream('./test_files/test.png');
drive.files.get({fileId: fileId, alt: 'media'})
.on('end', () => {
console.log('Done');
})
.on('error', err => {
console.log('Error', err);
})
.pipe(dest);
});
};
module.exports = gotData;
Run Code Online (Sandbox Code Playgroud)
遵循Google文档 LINK
我尝试过的所有其他功能(例如“列表”,“复制”,“上载”或“工作表读取和写入”)对我来说都很合适,除了“下载”。我的应用程序立即因错误而崩溃
TypeError:无法读取未定义的属性“ on”
我已经看过Google的此功能示例,但没有发现任何不同之处,那么为什么它对Google Developers有效,而对我却无效?
我在Google上没有找到一个遇到此问题的人,所以也许,如果您了解应该做什么,就可以知道我做错了什么。
-我将包括THIS LINK,这是我拥有的复制功能,在需要的情况下可以完美地工作。
感谢您的任何建议。
从您的脚本来看,我认为您可能正在使用v24.0.0以上版本的googleapi。那么如何修改googleapis版本呢?另外,您的情况也遇到了同样的问题。就我而言,该问题已通过将googleapis版本修改为v24.0.0来解决。
当我使用Googleapis的v25.0.0-v30.0.0时,发生错误。当它使用v24.0.0的googleapis时,该错误已消除。
如果这对您的情况没有帮助,对不起。
这个修改怎么样?在我的环境中,我确认此修改适用于v30.0.0版的googleapis。
drive.files.get({fileId: fileId, alt: 'media'})
.on('end', () => {
console.log('Done');
})
.on('error', err => {
console.log('Error', err);
})
.pipe(dest);
Run Code Online (Sandbox Code Playgroud)
drive.files.get({fileId: fileId, alt: 'media'}, {responseType: 'stream'},
function(err, res){
res.data
.on('end', () => {
console.log('Done');
})
.on('error', err => {
console.log('Error', err);
})
.pipe(dest);
}
);
Run Code Online (Sandbox Code Playgroud)
我改变了谷歌的例子。这样它就可以工作:
const fs = require('fs');
const { google } = require('googleapis');
const Auth = require('../authorization/auth_drive/auth');
// get data
var gotData = function downloadFiles(fileId, destination, callback) {
let content = fs.readFileSync('./GEARS/authorization/client_secret.json');
Auth(JSON.parse(content), (auth) => {
const returnData = [];
const drive = google.drive({ version: 'v3', auth });
const file = fs.createWriteStream(destination); // destination is path to a file
drive.files.get(
{fileId: fileId, alt: 'media',},
{responseType: 'stream'}, (err, res ) => {
if (err) {
returnData.push(["ERR"]);
returnData.push("" + err);
} else {
res.data.pipe(file);
returnData.push("Downloaded");
}
callback(returnData);
});
});
};
module.exports = gotData;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2548 次 |
| 最近记录: |