I am in the process of deploying my next.js app to firebase hosting/functions. After a perfectly fine working serve and a error-free deploy, I am seeing the following error in the Firebase functions logs, after calling my api:
import nextConnect from "next-connect";
import middleware from "../../../middleware/database";
const handler = nextConnect();
handler.use(middleware);
handler.get(async (req, res) => {
const {
query: { slug },
} = req;
const dataModel = {
_id: String,
slug: String,
source: String,
languages: Array,
};
let doc = {};
if (slug != null) {
doc = await req.db.collection("phrases").findOne({ slug: slug });
} else {
doc = null;
}
if (doc != null) {
res.statusCode = 200;
res.setHeader("Content-Type", "application/json");
res.json({ success: true, data: doc });
} else {
doc = dataModel;
res.json({ success: false, data: null });
}
});
handler.post(async (req, res) => {
res.json({ message: "post" });
});
handler.put(async (req, res) => {
res.end({ message: "put" });
});
export default handler;
import { MongoClient } from "mongodb";
const route = ROUTE;
const client = new MongoClient(route, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
async function database(req, res, next) {
if (!client.isConnected()) await client.connect();
console.log("db connected");
req.dbClient = client;
req.db = client.db("public");
return next();
}
export default database;
{
"name": "XXX",
"version": "0.1.1",
"private": true,
"scripts": {
"dev:client": "next src/app",
"dev:server": "babel src/server --out-dir dist/server --source-maps --watch",
"dev": "npm run dev:client & npm run dev:server",
"build:client": "next build src/app",
"build:server": "babel src/server --out-dir dist/server --source-maps",
"build": "npm run build:client && npm run build:server",
"preserve": "npm run build",
"serve": "cross-env NODE_ENV=production firebase serve --only functions,hosting",
"predeploy": "rimraf dist/ && npm run build",
"deploy": "cross-env NODE_ENV=production firebase deploy --only functions,hosting"
},
"main": "dist/server/index.js",
"engines": {
"node": "10"
},
"dependencies": {
"@appbaseio/reactivesearch": "^3.8.1",
"@fortawesome/fontawesome-svg-core": "^1.2.28",
"@fortawesome/free-solid-svg-icons": "^5.13.0",
"@fortawesome/react-fontawesome": "^0.1.9",
"body-parser": "^1.19.0",
"bootstrap": "^4.4.1",
"concurrently": "^5.2.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"firebase-admin": "^8.12.1",
"firebase-functions": "^3.6.2",
"isomorphic-unfetch": "^3.0.0",
"mongodb": "^3.5.7",
"mongoose": "^5.9.14",
"morgan": "^1.9.1",
"next": "^9.3.6",
"next-connect": "^0.7.0",
"node-fetch": "^2.6.0",
"react": "16.13.1",
"react-bootstrap": "^1.0.1",
"react-cookie-consent": "^3.0.0",
"react-dom": "16.13.1",
"react-helmet-async": "^1.0.6"
},
"devDependencies": {
"@babel/cli": "^7.10.1",
"@babel/core": "^7.10.2"
}
}