Node.js 生成自定义令牌的firebase函数中出错

Node.js 生成自定义令牌的firebase函数中出错,node.js,firebase,google-cloud-functions,Node.js,Firebase,Google Cloud Functions,我正在尝试实现一个Firebase函数,为我的应用程序生成一个自定义令牌。但我一直收到以下错误消息: 错误:无法处理该请求 或者它以超时结束 你知道我的代码以后会出什么问题吗?我正在用“测试”uid进行测试 const functions = require('firebase-functions'); const admin = require('firebase-admin'); const serviceAccount = require('./serviceAccountKey.json

我正在尝试实现一个Firebase函数,为我的应用程序生成一个自定义令牌。但我一直收到以下错误消息:

错误:无法处理该请求

或者它以超时结束

你知道我的代码以后会出什么问题吗?我正在用“测试”uid进行测试

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const serviceAccount = require('./serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

exports.customFunction = functions.https.onRequest((data, context) => {
  return admin.auth().createCustomToken('test')
  .then(customToken => {
      console.log(`The customToken is: ${customToken}`);
      return {
        status: 'success', 
        customToken: customToken
      };
  })
  .catch(error => {
      console.error(`Something happened buddy: ${error}`)
      return {
        status: 'error'
      };
  });
});
你的云功能是一个很好的例子。要终止它,您需要调用
res.redirect()
res.send()
,或
res.end()
,如中所述

在您的代码中,您实际上返回了承诺链:这是终止由后台事件触发的云函数的正确方法(HTTPS云函数不是通过调用其公开的URL触发的)

因此,以下更改应该可以做到这一点(未经测试):


请注意,使用HTTPS云函数,传递给处理程序的对象不是Firebase
数据
和对象,而是Express.js
请求
响应
对象

这样写起来就更清楚了

exports.customFunction = functions.https.onRequest((req, res) => {...});
而不是

exports.customFunction = functions.https.onRequest((data, context) => {...});

我认为OP在这里使用了
onRequest
而不是
onCall
。剩下的语法和
(数据,上下文)=>{}
的使用暗示了这一点。@samthecodingman您很可能是对的!让皮埃尔确认一下。
exports.customFunction = functions.https.onRequest((data, context) => {...});