您如何在 Lambda 函数中定义 emit() 属性
How do you define the emit() property in a Lambda Function
我只是想让 Alexa 说出我 google 传播 sheet 中的数据。我正在使用 google-spreatsheet node.js 模块而不是 http.get() 方法。
这是我的意图函数
'GetPainterIntent': function() {
// spreadsheet key is the long id in the sheets URL
var doc = new GoogleSpreadsheet('1K-dl08g8s27TgF5yMGv_Q5tBbkpRpGWrt3RkUB2mVKk');
var sheet;
async.series([
function setAuth(step) {
// see notes below for authentication instructions!
var creds = require('./creds.json');
// OR, if you cannot save the file locally (like on heroku)
/*
var creds_json = {
client_email: ' ',
private_key: ' '
}
*/
doc.useServiceAccountAuth(creds, step);
},
function getInfoAndWorksheets(step) {
doc.getInfo(function(err, info) {
console.log('Loaded doc: '+info.title+' by '+info.author.email);
sheet = info.worksheets[0];
//console.log('sheet 1: '+sheet.title+' '+sheet.rowCount+'x'+sheet.colCount);
this.emit('ask:', 'Do you want'+sheet.title+' '+sheet.rowCount+'x'+sheet.colCount);
step();
});
}
], function(err){
if( err ) {
console.log('Error: '+err);
}
});
}
在执行结果:失败日志中,我得到的关键之一是...
{
"errorMessage": "RequestId: 79ed1bc9-aaee-11e7-878b-5fe3ebd777ae
Process
exited before completing request"
}
TypeError: Cannot read property 'emit' of undefined
at getInfoAndWorksheets (/var/task/index.js:51:9)
at /var/task/node_modules/async/dist/async.js:3853:24
at replenish (/var/task/node_modules/async/dist/async.js:946:17)
at iterateeCallback
emit里面的属性是不是undefined?或者你如何定义 emit 的 属性 还是我读错了?
我认为问题在于您丢失了 this
编码方式,可能是因为它使用异步系列。用 var self=this
之类的行将 this
保存在顶部,然后使用 self.emit
代替。
我只是想让 Alexa 说出我 google 传播 sheet 中的数据。我正在使用 google-spreatsheet node.js 模块而不是 http.get() 方法。
这是我的意图函数
'GetPainterIntent': function() {
// spreadsheet key is the long id in the sheets URL
var doc = new GoogleSpreadsheet('1K-dl08g8s27TgF5yMGv_Q5tBbkpRpGWrt3RkUB2mVKk');
var sheet;
async.series([
function setAuth(step) {
// see notes below for authentication instructions!
var creds = require('./creds.json');
// OR, if you cannot save the file locally (like on heroku)
/*
var creds_json = {
client_email: ' ',
private_key: ' '
}
*/
doc.useServiceAccountAuth(creds, step);
},
function getInfoAndWorksheets(step) {
doc.getInfo(function(err, info) {
console.log('Loaded doc: '+info.title+' by '+info.author.email);
sheet = info.worksheets[0];
//console.log('sheet 1: '+sheet.title+' '+sheet.rowCount+'x'+sheet.colCount);
this.emit('ask:', 'Do you want'+sheet.title+' '+sheet.rowCount+'x'+sheet.colCount);
step();
});
}
], function(err){
if( err ) {
console.log('Error: '+err);
}
});
}
在执行结果:失败日志中,我得到的关键之一是...
{
"errorMessage": "RequestId: 79ed1bc9-aaee-11e7-878b-5fe3ebd777ae
Process
exited before completing request"
}
TypeError: Cannot read property 'emit' of undefined
at getInfoAndWorksheets (/var/task/index.js:51:9)
at /var/task/node_modules/async/dist/async.js:3853:24
at replenish (/var/task/node_modules/async/dist/async.js:946:17)
at iterateeCallback
emit里面的属性是不是undefined?或者你如何定义 emit 的 属性 还是我读错了?
我认为问题在于您丢失了 this
编码方式,可能是因为它使用异步系列。用 var self=this
之类的行将 this
保存在顶部,然后使用 self.emit
代替。