Функция Firebase TypeError: не удается прочитать стек свойства undefined для действия в Google - PullRequest
0 голосов
/ 05 августа 2020

Я использую облачные функции Firebase в качестве веб-перехватчика для выполнения моего диалогового процесса в Google.

Мой индекс. js файл выглядит следующим образом

'use strict';

process.env.DEBUG = 'actions-on-google:*';

var requestcall = require('request');
var date = require('date-and-time');
var promise = require('promise');
var AmazonDateParser = require('amazon-date-parser');
var moment = require('moment-timezone');

var accountnum;
var accessToken;
var timePeriod;
var acctnums =[];


// Create functions to handle requests here
const WELCOME_INTENT = 'input.welcome';  // the action name from the Dialogflow intent
const NUMBER_INTENT = 'account_number';  // the action name from the Dialogflow intent
const NUMBER_ARGUMENT = 'number'; // the action name from the Dialogflow intent

const OUT_CONTEXT = 'output_context';
const ACCOUNT_ARG = 'info';
const ACCOUNT_NUM = 'myAccountNum';
const AccountNums = 'AccountNums';
const CURRENCY_SYMBOL = 'CurrencySymbol';
const TIME_ZONE = 'TimeZone';
const STATS_ARG = 'nextStatsData';



const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');

const {
  SimpleResponse,
  BasicCard,
  Image,
  Suggestions,
  Button
} = require('actions-on-google');

const app = dialogflow(

{debug: true,clientId: 'xxxxxxxxxxx.apps.googleusercontent.com'});

 app.middleware((conv) => {
    
   });



  


app.intent('Default Welcome Intent', (conv) => {
   
  
  console.log('Request headers: ' + JSON.stringify(conv.headers));
  console.log('Request body: ' + JSON.stringify(conv.body));
  accessToken =conv.body.originalDetectIntentRequest.payload.user.accessToken;
   console.log('accessToken: ' + accessToken);
 
  if (accessToken !== null) {
      
      
      return  getaccountDetails(conv).then((entity)=>{
      return getMessageFromAccount(entity,conv);
      });
     
       
    
  }
  else{
      
     return conv.close(new SignIn('To get your account details'));
     
      
  }
 
  
  });
exports.stats = functions.https.onRequest(app);

Мой пакет. json файл выглядит следующим образом:

  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase experimental:functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "actions-on-google": "^2.12.0",
    "amazon-date-parser": "^0.1.5",
    "date-and-time": "^0.6.3",
    "dialogflow": "^0.6.0",
    "express": "^4.17.1",
    "firebase-admin": "^6.5.1",
    "firebase-functions": "^3.9.0",
    "moment-timezone": "^0.5.31",
    "node-pre-gyp": "^0.15.0",
    "promise": "^8.1.0",
    "request": "^2.88.2"
  },
  "engines": {
    "node": "10"
  },
  "devDependencies": {
    "firebase-functions-test": "^0.2.1"
  },
  "private": true,
  "version": "1.0.0",
  "main": "index.js",
  "author": "",
  "license": "ISC"
}

При тестировании своих действий в Google я получаю следующую ошибку

TypeError: Cannot read property 'stack' of undefined
    at standard.then.catch (/workspace/node_modules/actions-on-google/dist/framework/express.js:37:32)
    at process._tickCallback (internal/process/next_tick.js:68:7)

Ошибка отсутствует в моем индексе. js. Ошибка находится в библиотеке модулей actions-on-google npm по адресу express. js.

Я удалил свои модули узлов, установил их снова и перестроил код. по-прежнему появляется та же ошибка.

Пожалуйста, помогите мне в решении этой проблемы.

1 Ответ

1 голос
/ 06 августа 2020

Если вы используете облачные функции для Firebase - я бы не ожидал, что этот код вообще будет вызван.

Я подозреваю, что включение пакета «express» в ваши зависимости приносит внешняя версия express, и это сбивает с толку библиотеку actions-on-google, в которой типы express определены отдельно. Библиотека aog использует эту библиотеку для тех, кто использует express напрямую для настройки маршрута, и в этом нет необходимости, если вы используете облачные функции.

Я бы предложил удалить пакет и сделать убедитесь, что его нет в ваших модулях узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...