Home > Software design >  Firebase Functions With Express Failed to decode param %CO
Firebase Functions With Express Failed to decode param %CO

Time:11-06

There is a solution to this error without the use of Firebase here when using app.listen(8080) however this does not work while serving in cloud functions with exports.app = functions.https.onRequest(app)

Here is a simple reproduction code

const app = express();
app.get('**', (req, res) => res.send('working'));
app.use((err, req, res, next) => res.redirect('/404'));
exports.app = functions.https.onRequest(app) // doesnt work
// app.listen(8080) // works

How do you go about catching this error in firebase functions? I would like the redirect to work.

CodePudding user response:

Try changing the name of app in exports.

exports.newApp = functions.https.onRequest(app) 

CodePudding user response:

According to the documentation, the correct way of using an Express app with Firebase Functions is to pass the application to a Function like:

// Expose Express API as a single Cloud Function:
exports.app = functions.https.onRequest(app);

Listening to a port for requests does not apply when running through Firebase Functions. As for how to catch errors when passing your app to a function, it’s done in the same way as the question you referenced as far as I have reviewed. You can catch errors by using Express middleware while using Cloud Functions.

Moreover, implementing redirects with Firebase Functions is explained in this related question, which makes use of the documentation to configure how to redirect by modifying the firebase.json file.

  • Related