Previously, i deployed my project on compute engine where there was no any issue on page loading. The page used to load very fast. However, when i move to serverless, the page is loading very very slow and also sometime i get 'Error: could not handle the request'. I am not confident enough on serverless deployment.
Here is how I am deploying
structure
.firebase
.next
public
src
components
pages
utils
next.config.js
server.js
.firebaserc
firebase.json
package.json
configuration part
.firebaserc
{
"projects": {
"default": "project-test"
}
}
firebase.json
{
"hosting": {
"public": "public",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"function": "next"
}
]
},
"functions": {
"source": ".",
"ignore": [
".firebase/**",
".firebaserc",
"firebase.json",
"**/node_modules/**",
"**/.vscode/**",
"**/.hooks/**",
"**/public/**"
]
}
}
next.config.js
const withPlugins = require("next-compose-plugins");
const optimizedImages = require("next-optimized-images");
const withPWA = require("next-pwa");
module.exports = withPlugins(
[optimizedImages],
[
withPWA({
pwa: {
dest: "public",
},
}),
]
);
server.js (i dont know where this is being used)
const functions = require('firebase-functions');
const next = require('next');
var dev = false;
console.log('dev', process.env.NODE_ENV);
var app = next({ dev, conf: { distDir: '.next' } });
var handle = app.getRequestHandler();
exports.next = functions.https.onRequest((req, res) => {
console.log('File: ' + req.originalUrl); // log the page.js file that is being requested
return app.prepare().then(() => handle(req, res));
});
scripts
"scripts": {
"dev:client": "next",
"local": "dotenv -e .env.local next",
"dev:server": "node src/server --source-maps --watch",
"dev": "dotenv -e .env.development yarn dev:client & yarn dev:server",
"build": "dotenv -e .env.production next build",
"build:dev": "dotenv -e .env.development next build",
"build:staging": "dotenv -e .env.staging next build",
"build:production": "NODE_ENV=production dotenv -e .env.production next build",
"deploy:dev": "dotenv -e .env.development firebase deploy --only functions,hosting",
"deploy:staging": "dotenv -e .env.staging firebase deploy -P staging --only functions,hosting",
"start": "next start",
},
the way I am deploying is
first i build the project using following command
yarn build:dev
then deploy using yarn deploy:dev
here is the build file
Did i miss any important thing while deploying?
Note: I am using nextjs 9.4
