2017-07-11 4 views
1

Ich schreibe eine Aktion von einer API.AI Absicht, die die Anfrage analysiert und den Ursprung und das Ziel aus der Anfrage extrahiert. Das Problem ist, es wirft einen Referenzfehler und zeigt, dass die Daten nicht definiert sind.ReferenceError: Daten sind nicht definiert in exports.action

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); 
}); 

Antwort

0

Die Fehlermeldung sagt Ihnen alles - was falsch ist und die genaue Zeile.

Beachten Sie, dass:

orginalData !== originalData 

Eine gute Linter wie ESLint Sie Fehler so vermeiden helfen würde. Siehe:

einen guten Style Guide Nach auch viel Sie würde helfen. Zum Beispiel:

+0

Vielen Dank. Behält das vom nächsten Mal im Hinterkopf. –

Verwandte Themen