Chr*_*rah 5 javascript concurrency google-sheets node.js npm
如果我使用回调,下面使用Google 的 Sheets API v4的代码可以正常工作。
但是,我正在尝试申请util.promisifyAPI 调用。这引起:
Cannot read property 'getRoot' of undefined
Run Code Online (Sandbox Code Playgroud)
这是从:
node_modules\googleapis\build\src\apis\sheets\v4.js:592
Run Code Online (Sandbox Code Playgroud)
这行 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();
Run Code Online (Sandbox Code Playgroud)
好的,经过更多挖掘后,我开始工作了。
我修改了我的原始代码以使用以下内容:
let endpoint = promisify(api.spreadsheets.get.bind(api));
Run Code Online (Sandbox Code Playgroud)
不知道为什么 api 首先没有绑定到this/the 上下文。
| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |