如果我使用回调,下面使用Google的Sheets API v4的代码可以正常工作.
但是,我正在尝试将util.promisify应用于API调用.这导致:
Cannot read property 'getRoot' of undefined
抛出的是:
node_modules\googleapis\build\src\apis\sheets\v4.js:592
这行592说:context:this.getRoot()
我可能没有正确使用promisify,我希望有人可以帮助我.
我怀疑它可能与并发性有关.
任何提示将不胜感激.
let {
promisify
} = require('util');
let {
google
} = require('googleapis');
let sheets = google.sheets('v4');
let credentials = require('./credentials.json')
let client = new google.auth.JWT(
credentials.client_email, null, credentials.private_key, ['https://www.googleapis.com/auth/spreadsheets'])
client.authorize((err, tokens) => {
if (err) {
throw err;
}
});
let endpoint = promisify(sheets.spreadsheets.values.get);
async function test() {
let request = {
auth: client,
spreadsheetId: "xxxxxxxx",
range: "'ExampleSheet'!A:B",
valueRenderOption: "UNFORMATTED_VALUE",
majorDimension: "ROWS",
}
let result = await endpoint(request)
.then((res) => {
return res
})
.catch((err) => {
console.log(err);
});
}
test();
最佳答案 好的,经过一些挖掘,我得到了它的工作.
我修改了我的原始代码以使用以下内容:
let endpoint = promisify(api.spreadsheets.get.bind(api));
不知道为什么api首先没有绑定到这个/上下文.