ReferenceError:data is not defined in at exports.action
ReferenceError:data is not defined in at exports.action
我正在根据 API.AI 意图编写一个动作,该动作解析请求并从请求中提取起点和终点。
问题是它抛出引用错误并显示数据未定义。
ReferenceError: orginalData is not defined
at exports.distanceCalculator.functions.https.onRequest (/user_code/index.js:16:43)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:26:47)
at /var/tmp/worker/worker.js:652:7
at /var/tmp/worker/worker.js:636:9
at _combinedTickCallback (internal/process/next_tick.js:67:7)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
index.js
'use strict';
process.env.DEBUG = 'actions-on-google:*';
const App = require('actions-on-google').ApiAiApp;
const functions = require('firebase-functions');
exports.distanceCalculator=functions.https.onRequest((request,response) =>{
const app = new App({request, response});
console.log('Request headers: ' + JSON.stringify(request.headers));
console.log('Request body: ' + JSON.stringify(request.body));
var reJson,distance,duration,resText,reSon;
var request=require('request');
var orginalData=JSON.parse(JSON.stringify(request.body || null);
console.log("The data received is: "+originalData);
var origin=orginalData.result.parameters.geo_city;
var destination=orginalData.result.parameters.geo_city;
var travelMode='driving';
var reqURL="https://maps.googleapis.com/maps/api/distancematrix/json?origins="+origin+"&destinations="+destination+"&mode="+travelMode;
//Logger
console.log('Origin: '+origin);
console.log('Destination: '+destination);
console.log('Travel Mode: '+travelMode);
console.log('Request Url: '+reqURL);
function disCal(app){
//Google Maps API call
request(reqURL,function(error,response,body){
reJson=JSON.parse(body);
distance=reJson.rows[0].elements[0].distance.text;
duration=reJson.rows[0].elements[0].duration.text;
resText="The distance between "+origin+" and "+destination+" is "+distance+" and it would take you "+duration+" to reach there"
});
console.log(global.resText);
global.reSon=JSON.parse('{"displayText": global.resText}');
app.post('/webhook', (req, res) =>
{
var reSon=JSON.parse('{"displayText": global.resText}');
return res.json(reSon);
});
app.tell(reSon);
return res.json(reSon);
}
let actionMap=new Map();
actionMap.set('cities.distance',disCal);
app.handleRequest(actionMap);
});
错误消息告诉您一切 - 哪里出了问题以及确切的行。
注意:
orginalData !== originalData
像 ESLint 这样的好 linter 可以帮助你避免这样的错误。参见:
遵循良好的风格指南也会对您有很大帮助。例如:
我正在根据 API.AI 意图编写一个动作,该动作解析请求并从请求中提取起点和终点。 问题是它抛出引用错误并显示数据未定义。
ReferenceError: orginalData is not defined
at exports.distanceCalculator.functions.https.onRequest (/user_code/index.js:16:43)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:26:47)
at /var/tmp/worker/worker.js:652:7
at /var/tmp/worker/worker.js:636:9
at _combinedTickCallback (internal/process/next_tick.js:67:7)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
index.js
'use strict';
process.env.DEBUG = 'actions-on-google:*';
const App = require('actions-on-google').ApiAiApp;
const functions = require('firebase-functions');
exports.distanceCalculator=functions.https.onRequest((request,response) =>{
const app = new App({request, response});
console.log('Request headers: ' + JSON.stringify(request.headers));
console.log('Request body: ' + JSON.stringify(request.body));
var reJson,distance,duration,resText,reSon;
var request=require('request');
var orginalData=JSON.parse(JSON.stringify(request.body || null);
console.log("The data received is: "+originalData);
var origin=orginalData.result.parameters.geo_city;
var destination=orginalData.result.parameters.geo_city;
var travelMode='driving';
var reqURL="https://maps.googleapis.com/maps/api/distancematrix/json?origins="+origin+"&destinations="+destination+"&mode="+travelMode;
//Logger
console.log('Origin: '+origin);
console.log('Destination: '+destination);
console.log('Travel Mode: '+travelMode);
console.log('Request Url: '+reqURL);
function disCal(app){
//Google Maps API call
request(reqURL,function(error,response,body){
reJson=JSON.parse(body);
distance=reJson.rows[0].elements[0].distance.text;
duration=reJson.rows[0].elements[0].duration.text;
resText="The distance between "+origin+" and "+destination+" is "+distance+" and it would take you "+duration+" to reach there"
});
console.log(global.resText);
global.reSon=JSON.parse('{"displayText": global.resText}');
app.post('/webhook', (req, res) =>
{
var reSon=JSON.parse('{"displayText": global.resText}');
return res.json(reSon);
});
app.tell(reSon);
return res.json(reSon);
}
let actionMap=new Map();
actionMap.set('cities.distance',disCal);
app.handleRequest(actionMap);
});
错误消息告诉您一切 - 哪里出了问题以及确切的行。
注意:
orginalData !== originalData
像 ESLint 这样的好 linter 可以帮助你避免这样的错误。参见:
遵循良好的风格指南也会对您有很大帮助。例如: