Мой основной файл сервера nextJS выглядит так:
const express = require("express");
const next = require("next");
const port = parseInt(process.env.PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== "production";
const app = next({ dev });
const handle = app.getRequestHandler();
app
.prepare()
.then(() => {
const server = express();
server.use(express.json());
require("./routes/indexRouter")(server, app);
server.all("*", (req, res) => {
return handle(req, res);
});
server.listen(port, (err) => {
if (err) throw err;
console.log("> Ready on http://localhost:" + port);
});
})
.catch((ex) => {
console.error(ex.stack);
process.exit(1);
});
nodemon.json
{
"verbose": true,
"ignore": ["node_modules", ".next"],
"watch": ["server/**/*", "app.js"],
"ext": "js json"
}
Суть вопроса: Когда я пишу код на сервере, nodemon каждый раз перезапускает файл командой
node server/app.js
. С этим все хорошо, он справляется быстро, но вот вместе с этим происходит компиляция проекта nextJS, и этот процесс занимает довольно длительное время. Например при изменений роутинга мне нужно быстро проверить результат в браузере, и к сожалению приходится ждать пока next скомпилируется - это получается бессмысленная компиляция и трата времени. Я думал конечно о проксизаций отдельного проекта сервера, но у меня роутинг express связан с next. Вот пример из файле indexRoutes.js
module.exports = (app, nextApp) => {
app.get('/page1', (req, res) => {
if (...) {
return nextApp.render(req, res, '/page1');
}
return nextApp.render(req, res, '/page2');
});
};