【问题标题】:Javascript to Typescript Conversion Error - Cloud FunctionJavascript 到 Typescript 转换错误 - 云函数
【发布时间】:2020-10-19 02:43:54
【问题描述】:

我正在按照本指南 (https://www.youtube.com/watch?v=qZ1EFnFOGvE&list=PL55RiY5tL51r5jyQoPZhwLueLpPeAV6P9) 尝试我的第一个云函数,它是用 JS 编写的,但不是用 Typescript 编写的。

我创建了以下内容:


// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
 export const helloWorld = functions.https.onRequest((request, response) => {
  
  if (request.method !== 'POST') {
      return response.status(500).json({
          message: 'Not allowed'
      });
  }

  response.status(200).json({
      message: 'Hello World!'
  });
 });

但是,linter 给了我以下错误:

类型参数'(request: Request, response: Response) => Response | undefined' 不能分配给 '(req: Request, resp: Response) => void | 类型的参数承诺'。 输入“响应 | undefined' 不可分配给类型 'void |承诺'。 类型“响应”不可分配给类型“无效 |”承诺'。 “响应”类型缺少“承诺”类型中的以下属性:然后,捕获,[Symbol.toStringTag]

我不确定如何修改代码。

【问题讨论】:

    标签: typescript firebase google-cloud-functions


    【解决方案1】:

    Typescript 需要一个不返回任何内容或返回承诺的函数。但是,您在 if 语句中返回响应对象,如果条件不成立,则返回未定义的对象。 在这种情况下,一个简单的修复方法是:

    export const helloWorld = functions.https.onRequest((request, response) => {
    
      if (request.method !== 'POST') {
        response.status(500).json({
           message: 'Not allowed'
        });
      } else {
        response.status(200).json({
          message: 'Hello World!'
        });
      }
    
    });
    

    如果你想从函数中“返回”而不是使用 else 语句,你可以这样做:

    export const helloWorld = functions.https.onRequest((request, response) => {
    
      if (request.method !== 'POST') {
        response.status(500).json({
           message: 'Not allowed'
        });
        return;
      }
      
      response.status(200).json({
        message: 'Hello World!'
      });
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 2018-09-08
      • 2018-12-17
      • 2022-11-26
      • 1970-01-01
      • 2018-10-17
      • 2021-12-30
      相关资源
      最近更新 更多