Firebase功能角色

时间:2017-04-14 14:03:34

标签: angularjs firebase ionic-framework cors google-cloud-functions

我正在使用Firebase函数,并且在使用Ionic Native HTTP插件(https://ionicframework.com/docs/native/http/)时,一切正常。 今天,我决定转向Angular-Http实现,因为我也可以在浏览器中测试我的代码。

我面临的问题是,由于我离开原生方法并使用Angular方式处理Http,我收到与CORS相关的错误:

  

请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:8100”访问。响应的HTTP状态代码为500。

在服务器端,我跟着https://github.com/firebase/functions-samples/tree/master/authorized-https-endpoint,这很好,直到我使用Angular for HTTP。

我在服务器上的代码如下所示:

const admin = require('firebase-admin');
const cors = require('cors')({origin: true});
admin.initializeApp(functions.config().firebase);

const router = new express.Router();
router.use(cors);
router.use(validateFirebaseIdToken);
router.post('/', (req, res) => {
  console.log("Proccess myFunction");
  ...
}
exports.myFunction = functions.https.onRequest(router); 

在firebase控制台中,我得到以下日志:

  

3:41:28.429 nachm。警告myFunction TypeError:无法在立即读取未定义的属性'apply'。 (/user_code/node_modules/express/lib/router/index.js:635:14)在runCallback(timers.js:639:20)的tryOnImmediate(timers.js:610:5)at processImmediate [as _immediateCallback](timers)的.js:582:5)

     

3:41:28.428 nachm。警告myFunction未捕获异常

     

3:41:28.424 nachm。 info myFunction Proccess myFunction

所以看起来,我的函数被调用并且日志出现,但连接在两者之间丢失。如上所述,在使用Angular Http之前,它一切正常。根据我的其他日志条目,崩溃发生在那个时刻,当我尝试访问Firebase存储时(但由于之前有效,我很确定,存储的访问很好)。

编辑: 身体中的值似乎也未定义。

console.log("ID "+req.body.userID);

打印:

  

“ID undefined”

1 个答案:

答案 0 :(得分:2)

好的,我发现了这个问题。 在请求方面,我不得不使用' application / json'作为内容类型。不知道为什么会引起cors错误,以及之前为什么会这样。