app.js
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(); const indexRouter = require('./routes/indexRouter'); server.use(indexRouter); 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); }); indexRoutes.js
const express = require('express'); const router = express.Router(); const userController = require('../controllers/user'); router.post('/api/signup', userController.signup); Quiero representar el componente a través de Next.js en indexRoutes.js . He visto a otros hacerlo en la app.js principal.js.
server.get('/login', (req, res) => { app.render(req, res, '/login'); });Pero no entiendo cómo puedo hacerlo en un archivo separado. Intenté hacer esto, pero sin resultado.
indexRoutes.js
const express = require('express'); const next = require('next'); const dev = process.env.NODE_ENV !== 'production'; const app = next({ dev }); const router = express.Router(); const userController = require('../controllers/user'); router.post('/api/signup', userController.signup); router.get('/login', (req, res) => { return app.render(req, res, '/login'); // this does not work });¿Cómo puedo solucionar mi problema?
Si desea colocar las rutas en un archivo separado, puede crear el siguiente archivo indexRouter.js :
// routes/indexRouter.js const userController = require('../controllers/user'); const indexRouter = (server, app) => { server.post('/api/signup', userController.signup); server.get('/login', (req, res) => { return app.render(req, res, '/login'); }); }; module.exports = indexRouter; Luego puede solicitarlo desde app.js y pasarle el server y los objetos de la app .
// app.js // ... app .prepare() .then(() => { const server = express(); const indexRouter = require('./routes/indexRouter'); 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); });