Firebase 云功能在部署时未更新 - 仍在提供旧版本的功能

Stu*_*son 5 javascript firebase google-cloud-platform google-cloud-functions

我很沮丧和困惑。我正在尝试部署我的云功能,但是每当我这样做时,它们都没有正确更新,尽管 firebase 说它们已成功更新,但仍继续提供旧功能。这是我的 index.js:

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

//Cloud functions for user interaction
const charge = require('./func/charge');
const addProduct = require('./func/addProduct');
const removeProduct = require('./func/removeProduct');
const updateTracking = require('./func/updateTracking');

admin.initializeApp(functions.config().firebase);

exports.charge = functions.https.onRequest(charge);
exports.updateTracking = functions.https.onRequest(addProduct);
exports.addProduct = functions.https.onRequest(removeProduct);
exports.removeProduct = functions.https.onRequest(updateTracking)
Run Code Online (Sandbox Code Playgroud)

这是我的 addProduct 函数,所有东西都被剥离了。这还是不更新。

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const express = require('express');
const request = require('request');
const send = require('../send.js');
const cors = require('cors')({origin: '*'});

function addProduct(req, res) {
    console.log('THIS NEVER PRINTS')
    send(res, 500, {
        error: `FAILURE`
    })
}

const appAddProduct = express();
appAddProduct.use(cors);
appAddProduct.post('/', (req, res) => {

    // Catch any unexpected errors to prevent crashing
    try {
        addProduct(req, res);
    } catch(e) {
        console.log(e);
        send(res, 500, {
            error: `The server received an unexpected error. Please try again and contact the site admin if the error persists.`,
        });
    }
});

module.exports = appAddProduct
Run Code Online (Sandbox Code Playgroud)

这仍然提供来自旧函数的成功消息和状态代码 200,其中存在逻辑错误,而这应该每次都提供 500 错误。我将它分成多个文件的方式显然有问题,因为这是问题开始的地方,但我不确定我哪里出错了。帮助将不胜感激。

Dou*_*son 6

您导出的函数名称与导入文件的名称不匹配:

exports.charge = functions.https.onRequest(charge);
exports.updateTracking = functions.https.onRequest(addProduct);
exports.addProduct = functions.https.onRequest(removeProduct);
exports.removeProduct = functions.https.onRequest(updateTracking)
Run Code Online (Sandbox Code Playgroud)

我发现四个函数中的三个没有与同名导入配对。唯一匹配的是charge. 我怀疑你并不是有意这么做的。

  • *内心尖叫*。我的天啊。我花了好几个小时试图弄清楚这一点。这是令人印象深刻的愚蠢。我每天都为自己没有被解雇而感到惊讶。 (4认同)