Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何处理云函数返回的不同类型的错误?

如何处理云函数返回的不同类型的错误?
EN

Stack Overflow用户
提问于 2019-07-22 03:47:03
回答 1查看 81关注 0票数 0

我已经编写了云函数,它发送状态码为200或400的响应,但有时我会收到以下错误

函数执行耗时219毫秒,已完成,状态为:'connection error‘错误:函数崩溃超出请求范围,函数调用中断。

所以问题是我需要知道发送这个错误消息和一些状态码作为云函数的响应。

代码语言:javascript
运行
AI代码解释
复制
const functions = require('firebase-functions');
const dialogflow = require('dialogflow');
const admin = require('firebase-admin');
const Firestore = require('@google-cloud/firestore');
const firestore = new Firestore();
admin.initializeApp();
var db = admin.firestore();
const {WebhookClient} = require('dialogflow-fulfillment');
var UID = new Object();

exports.fulfillmenttext = functions.https.onRequest((req,res) =>{ 
    const answer1 = req.body.Text;
    const uid = answer1.substring(0,28);
    const answer = answer1.substring(28);
    const sessionId = uid;
    var count,questvalue;
    const promise = db.collection("***").doc('***').collection("**").doc("uid").get();
    promise.then(doc => {
        snapshot.forEach(function(doc) {
            if (doc.exists) {
              count = doc.data().count;
                if(count == 1){
                    var updatequest = title[questvalue];
                    res.status(200).send({"question":updatequest,"question_number":questvalue});
                    return;
              }
              else{
                runSample();
              }
          } 
          else {
              console.log("No such document!");
          }
        });
      }).catch(function(error) {
          console.log("Error getting document:", error);
      });


    async function runSample() {
      const languageCode = 'en-US';
      const projectId = 'xxxxxxx';
      const credentials = {
        client_email: 'xxxxxxx',
        private_key:
          'xxxxxxx',
      };
      //Instantiate a DialogFlow client.
      const dialogflow = require('dialogflow');
      const sessionClient = new dialogflow.SessionsClient({
        projectId,
        credentials,
      });
    // Define session path
      const sessionPath = sessionClient.sessionPath(projectId, sessionId);
      // The text query request.

        const request = {
            //session: context1,
            session: sessionPath,
            queryInput: {
              text: {
                text: answer,
                languageCode,
              },
            },
        };

      const responses =  await sessionClient.detectIntent(request);
      const result = responses[0].queryResult;
      let action = result.action; 
      if (result.intent) {
        const question = result.fulfillmentText;
        console.log("question is",question);
        const actionHandlers = {
            'early': () => {
                console.log('earlyaction1', action);
                let name1 = JSON.stringify(result.parameters.fields.Name.stringValue);
                name1 = name1.toString().replace(/"/g,"");
                var data1 = {
                    Name: name1
                };
                var setDoc1 = admin.firestore().collection('**').doc('uid').collection("***").doc('uid').collection('**').doc('**').update(data1);


            },

        };
        if (action === 'early') {
             console.log('1');
             actionHandlers[action]();
        }


        res.status(200).send({"question":result.fulfillmentText,"action":action,"question_number":title.indexOf(question)});
        } else {
          console.log(`  No intent matched.`);
          res.status(400).send({"action":"empty"});
      }
    } 

});
EN

回答 1

Stack Overflow用户

发布于 2019-07-22 03:51:09

该消息告诉您,在函数通过向客户端发送响应正常终止后,仍有一些异步代码在运行。那段异步代码崩溃了。由于函数已经通过发送响应而终止,因此您无法再向发送另一个响应。每个函数调用只能有一个响应。

你要做的就是检查你的代码,并确保你1)正确地处理了承诺,2)不是故意在发送响应后留下任何工作,因为Cloud Functions不支持这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57138956

复制
相关文章
&nbsp在IE和FireFox中显示不一致
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/38704045
DannyHoo
2018/09/13
1.3K0
&nbsp在IE和FireFox中显示不一致
比例字体&等宽字体
我们都知道等宽字体和比例字体的区别,就在于比例字体(Monospaced Font)即每个字母宽度是按一定比例自动调整的,而等宽字体(Proportional font)则是固定宽度,固定间距,字体的
练小习
2017/12/29
9.4K0
比例字体&等宽字体
ttf 字体压缩
安装 nodeJs 这个不多说,都有。 安装字蛛 输入命令 1 npm install font-spider -g 运行 安装成功之后就开始压缩了 image.png 我的 css 1 2 3 4 5 6 <style type="text/css"> @font-face { font-family: MMT; src: url("font/MMT_579767_SOAJ0_0.ttf"); } </style> 生成新的字体库,命令行输入 1 font-spider C:
Cell
2022/02/25
1.2K0
ttf 字体压缩
Windows 和 Linux 上安装 TTF 字体的方法
其实,我们一开始考虑的方案是将字体文件安装在运行项目的每台客户机上,但是,因为使用项目的客户机实在太多,每台都装的话太过繁琐,所以就采用了文件引用的方式。
编程三昧
2022/01/31
6.3K0
Windows 和 Linux 上安装 TTF 字体的方法
关于拖拽功能在IE11 、Firefox和Safari中不兼容的问题
1是event的path属性引起的bug(ie,firebox,safari) 2是event的dataTransfer.setData属性(ie,firebox) 3是firefox在拖动的时候会打开一个新窗口 (firbox) 4是ie11不支持onclick属性方法 ; ie11 里元素对象的attributes的排序和其他浏览器不同, ie11 中 remove()方法不work (ie)
lilugirl
2019/05/28
3.4K0
ttf设置文字字体
MainActivity如下: package cn.testfont;   import android.os.Bundle;   import android.widget.TextView;   import android.app.Activity;   import android.graphics.Typeface;   /**  * Demo描述:  * 利用TTF字体文件文字的显示效果  *   * 步骤如下:  * 1 在asset下建立fonts文件夹  * 2 将.tt
xiangzhihong
2018/01/29
1.7K0
CSS实现三列图片等宽等间距布局
每个图片块左浮动,宽30%,左外边距2.5%: 100%=(2.5%+30%)+(2.5%+30%)+(2.5%+30%)+2.5%
用户8983410
2021/09/22
8200
CSS魔法堂:再次认识font
一、前言                                 文字承载着站点内涵,而良好的字体、排版则为用户提供舒适的阅读体验。本文打算对字体稍微深入一下子网页字体的内容,若有纰漏请大家指正,谢谢!   目录一坨: 二, 字体分类 1. 衬线体(Serif) 2. 无衬线体/非衬线体(Sans-Serif) 3. 等宽体(Monospace) 4. 手写体/书法体(Calligraphy) 5. 符号体(Symbol) 三, 再识font-family 1. 认识font-fam
^_^肥仔John
2018/01/18
2.3K0
CSS魔法堂:再次认识font
VSCode设置中英混合等宽字体
VSCode 中的 alt+shift 快捷键能够同时操作多列,但其前提是被操作的部分要完全对齐,这就要求 VSCode 编缉器使用的字体得是等宽的。
hotarugali
2022/03/18
8.4K0
Firefox显示中文字太小的问题 (改变Firefox最小字体)
很多时候在IE上显示没有问题的页面,到了Firefox下,不知道为什么有些部分的字体就是很小。 原因是,这些文字在样式没有设定多大,浏览器就以默认的设置来显示,我估计就是以最小字体。例如ASP.net
用户1258909
2018/07/03
1.2K0
webpack处理ttf字体文件报错的方法
我们在使用webpack打包的时候经常因为引入ttf字体报错而烦恼,这里解决ttf字体报错的方法需要加入一个url-loader,没有的话需要npm先安装下:
Dream城堡
2018/12/19
4.3K0
CSS实现三列图片等宽等间距布局
每个图片块左浮动,宽30%,左外边距2.5%: 100%=(2.5%+30%)+(2.5%+30%)+(2.5%+30%)+2.5%
用户7718188
2021/11/02
5580
dotnet 解析 TTF 字体文件格式
在 Windows 下,可以使用 DX 提供的强大能力,调用 DX 读取 TTF 字体文件,获取字体文件的信息以及额外的渲染信息。特别是基于 DX 的 WPF 更是加了一层封装,使用 FontFamily 类型提供的友好方法获取到字体的信息。出于学习的目的,本文将不使用任何平台封装好的方法,自己读取二进制的 TTF 文件,解析 TTF 的内容,获取到字体文件里面的字体名
林德熙
2023/04/07
1.7K0
ttf字体文件抽取自己想要的字
在博客中,为了突出系统样式的美观,侧栏文字我使用了自定义文字,但一个字体包高达3M多,为了提高用户和体验减少服务器压力,我们只需要ttf字体文件中抽取自己想要的字即可,这样即可达到令人满意的效果。 注:过程比较繁琐,此方法只试用于只需要少数字体的情况
qiangzai
2021/12/21
2.3K0
ttf字体文件抽取自己想要的字
java方法&nbsp;调用&nbsp;问题
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class Writer { int n=0; String bookName; public void addComputerB(String name) { ++n; bookName = name; try { FileWriter filew= new FileW
明明如月学长
2021/08/27
4330
mysql&nbsp;存储引擎&nbsp;&nbsp;和&nbsp;事务
·  MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。
明明如月学长
2021/08/27
5680
阻止浏览器冒泡事件,兼容firefox和ie
//得到事件 function getEvent(){ if(window.event) {return window.event;} func=getEvent.caller; while(func!=null){ var arg0=func.arguments[0]; if(arg0){ if((arg0.constructor==Event || arg0.constructor ==MouseEvent
李文杨
2018/03/14
1.1K0
CSS3魔法堂:认识@font-face和Font Icon
一、前言                                过去我们总通过图片来美化站点的LOGO、标题、图标等,而现在我们可以通过@font-face获取另一种更灵活的美化方式。 二、看看例子                            /* 定义 */ @font-face { font-family: 'MicrosoftYaHei'; src: url('MicrosoftYaHei.eot'); /* IE9 Compat Modes */ src:
^_^肥仔John
2018/01/18
2.2K0
CSS3魔法堂:认识@font-face和Font Icon
vs code terminal 字体过大、字体间距过大 怎么处理
在Features中找到terminal,然后找到字体的相关设置,可以搜索font查找:
acoolgiser
2020/05/14
3.4K0
点击加载更多

相似问题

IE和FireFox中的CSS字体变化问题

30

IE和Firefox web字体呈现问题

10

firefox和IE中字体族css属性的问题

21

Chrome与Firefox/IE之间的间距问题

14

为什么Firefox拒绝ttf字体

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文