Setting custom directory for server files for Next.js

Tags: , ,



Rather than in the root directory, I want to keep all my backend related files inside a folder named ‘server’. The problem is now the frontend won’t load properly as it can’t find the ‘pages’ directory. I remember there was a way to set the directory somehow when initializing the app but I don’t remember the specifics. Can someone please help me with this?

server/index.js:

const express = require('express')
const next = require('next')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ 
  dev, 
  // some config property that I don't remember
})
app.prepare().then(() => {
    const server = express()
    server.listen(3000, () => console.log('> Ready on http://localhost:3000'))
})

Answer

You can read from the documentation:

The next API is as follows:

next(opts: object)
Supported options:

dev (bool) whether to launch Next.js in dev mode - default false
dir (string) where the Next project is located - default '.'
quiet (bool) Hide error messages containing server information - default false
conf (object) the same object you would use in next.config.js - default {}

Then, change your start script to NODE_ENV=production node server.js.

It is dir option.



Source: stackoverflow