忽略云功能中已完成功能的异常

Fai*_*med 2 node.js firebase google-cloud-functions

我使用云功能的火力地堡获得使用访问令牌之后,我正在做休息调用https://www.googleapis.com/auth/cloud-platform.但是这样做我得到异常忽略完成的函数的异常.

例外 我想知道为什么我收到这条消息,背后的原因是什么.#AskFirebase

下面编辑的是我的accessTokenHandler.js

 const functions = require('firebase-functions');
 var googleAuth = require('google-oauth-jwt');
 const predictor=require("../prediction/predictor");


module.exports.getAccessToken=() =>{

googleAuth.authenticate({
email: 'my.gserviceaccount.com',
keyFile: "./accesstoken/key2.pem",
expiration: 3600000,
scopes: ['https://www.googleapis.com/auth/cloud-platform']
}, function (err, token) {
if(token){
    console.log("token:"+token);
    predictor.predict(token);
}
 if(err)console.log("err:"+err);
});
}
Run Code Online (Sandbox Code Playgroud)

以下是我的预测器.js

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;

module.exports.predict=(accessToken) =>{
predictImage(accessToken);
}

function predictImage(accessToken){

var httpRequest= new XMLHttpRequest();
httpRequest.open("POST","url",true);
httpRequest.setRequestHeader("Content-Type","application/json");
httpRequest.setRequestHeader("Accept","application/json");
httpRequest.setRequestHeader("Authorization", "Bearer " + accessToken); 
httpRequest.send(getRequestJson());

httpRequest.onreadystatechange =function(){
    if(this.readyState==4){
    console.log("status:"+this.status+" state:"+this.readyState)
    console.log("response:"+this.responseText)
    }
}
}

function getRequestJson()
{
var b64Image='/9j/oAxt--encoded---f/2Q==';
var requestJson={"instances":
[{"key":"input_cloudfunction.jpg","image_bytes":{"b64":b64Image}}]};
return requestJson;
}
Run Code Online (Sandbox Code Playgroud)

和我的index.js文件

const functions = require('firebase-functions');

exports.handleFreshAccessToken = functions.https.onRequest((request, response) => {
 response.send("Hello from Firebase!"); 
 const accessHandler=require("./accesstoken/accesstoken_handler");
 return accessHandler.getAccessToken();
});
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 5

在代码完成之前,代码中会发生一些错误.对于HTTPS类型函数,它们在响应发送到客户端时正式完成.在您的代码中,您将立即向客户端发送响应,这意味着您在"功能完成后"发生之后正在执行的所有其他操作.

如果你在函数中有异步工作,你应该在发送响应之前等待所有这些完成(使用promises).

  • 后台函数呢?如何了解异常详细信息? (3认同)