2

I'm trying to separate my routes, previously i'm including them to my app.js

/backend/app.js

const express = require("express");
const router = require("./routes");
const status = require("./routes/status");
const register = require("./routes/register");
const login = require("./routes/login");


app.use('/', router);
app.use('/status', status);
app.use('/login', login);
app.use('/register', register);

I realized its not ideal since i am adding more and more routes later on and the app.js will be polluted with them

What i want to do now is just to import an index.js to app.js and basically this index have all the routes needed

/backend/routes/index

const routes = require("express").Router();
const root = require("./root");
const status = require("./status");
const register = require("./account/register");
const login = require("./account/login");


routes.use("/",  root);
routes.use("/login", login);
routes.use("/register", register);
routes.use("/status", status);
and now in the app.js i can just include the index

const routes = require("./routes");
app.use('/', routes);

but its not working im getting 404 error when trying to request to login route

im exporting them like this

module.exports = routes;

  • 1
    Possible duplicate of [How to include route handlers in multiple files in Express?](https://stackoverflow.com/questions/6059246/how-to-include-route-handlers-in-multiple-files-in-express) – Eldho Nov 04 '18 at 08:53
  • no i want to use `app.use` on different file since i will have many `app.use` in my app.js i want it to be separated – Jacobs Naskzmana Nov 04 '18 at 09:01

1 Answers1

2

In your app.js

app.use('/', require('./backend/routes/index'))

Then, in your routes/index

import express from 'express'

const router = express.Router()

// GET /
router.get('/', function (req, res) {

})

// GET /countries
router.get('/countries', (req, res, next) => {

})

// POST /subscribe
router.post('/subscribe', checkAuth, generalBodyValidation, (req, res, next) => {

})

// All routes to /admin are being solved in the backend/routes/admin/index file
router.use('/admin', require('./backend/routes/admin/index'))

module.exports = router

Your admin/index file can be import express from 'express'

const router = express.Router()

// POST /admin/login
router.post('/login', (req, res, next) => {

})

module.exports = router

With this, you will be able to perform a POST request to /admin/login.

Hope this solves your problem, if it does mark my answer as correct, if not tell me what went wrong and I will solve it :D

Pedro Silva
  • 1,858
  • 9
  • 20