TOP 10
TOP 10

Reputation: 97

Express: Unable to route

On my home page i have a student login button. On clicking i want to redirect to a login page. But i am not getting request inside login route.

server.js file

const express=require('express');
const path=require('path');
const bodyparser=require('body-parser');
const session=require('express-session');
const{v4:uuidv4}=require('uuid');

const router=require('./router');

const app=express();

const port=process.env.PORT||3000;

app.arguments(bodyparser.json())
app.arguments(bodyparser.urlencoded({extended:true}))

app.set('view engine','ejs');

app.arguments(session({
    secret:uuidv4(),
    resave: false,
    saveUninitialized: true
}));


app.use('/route',router)

//home route
app.get('/',(req,res)=>{
    res.render('home');
})

app.listen(port,()=>{console.log("Listening to the server on http://localhost:3000")});

router.js file

var express=require('express');
var router=express.Router();


//student login page
router.get("/studentlogin",(req,res)=>{
    res.end("Login Successfull");
})

Module.exports=router;

views/home.ejs file

 <form action="/route/studentlogin">
     <input type="submit" class="btn btn-outline-primary align-items-end" value="Student Login">
 </form>

What i am expecting is to print login successfull but i am getting error.

Error

Cannot GET /route/studentlogin

Upvotes: 0

Views: 79

Answers (1)

lpizzinidev
lpizzinidev

Reputation: 13289

  1. Try to use app.use instead of app.arguments
  2. Replace bodyParser with express
  3. Add the cors library to enable CORS
  4. Export a module using module.exports

Server.js

const express = require('express');
const path = require('path');
const cors = require('cors')
const session = require('express-session');
const { v4: uuidv4 } = require('uuid');

const router = require('./router');

const app = express();

const port = process.env.PORT || 3000;

app.use(cors())

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.set('view engine', 'ejs');

app.use(
  session({
    secret: uuidv4(),
    resave: false,
    saveUninitialized: true,
  })
);

app.use('/route', router);

//home route
app.get('/', (req, res) => {
  res.render('home');
});

app.listen(port, () => {
  console.log('Listening to the server on http://localhost:3000');
});

router.js

...
module.exports=router;

Upvotes: 2

Related Questions