0

I am beginner in Nodejs program I tried to do simple cookies program.I successfully set and delete the cookies successfully.but I could not get the cookies what I set before.It shows an error.can anyone tell me how to get the cookie in nodejs Thanks in advance....

const express=require("express");
const cookieParser=require("cookie-parser");
const app=express();
const router=express.Router();
const port=process.env.Port||8086;
app.use(router);
app.use(cookieParser());
router.get("/setcookie",function(req,res)
{
    console.log("Come in to set the cookie");
    res.cookie("program","NodeJS"/*,{maxAge:60000}*/);
    res.cookie("Database","MongoDB"/*,{maxAge:1200000}*/);
    console.log("Cookie set successfully");
    res.send("Cookie set successfully");
});
router.get("/deletecookie",function(req,res)
{
    console.log("come in to delete the cookie");
    res.clearCookie("program");
    res.send("Cookie deleted successsfully");
});
router.get("/getcookie",function(req,res)
{
    console.log("Come in to read the cookie");
    console.log(req.cookies['program']);
    console.log(req.cookies['Database']);
    res.send("Cookie Accessed successfully");
});
app.listen(port,function()
{
    console.log("server is listening on port 8086");
});


ERROR I GOT:

TypeError: Cannot read property 'program' of undefined
    at C:\Users\VIGNESH\WebstormProjects\cookies-middleware\simple-cookies.js:25:28
    at Layer.handle [as handle_request] (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:174:3)
    at router (C:\Users\VIGNESH\WebstormProjects\cookies-middleware\node_modules\express\lib\router\index.js:47:12)
Community
  • 1
  • 1
demo developers
  • 161
  • 4
  • 18

1 Answers1

1

You need to add the cookieParser() before the router, so the code will be

app.use(cookieParser());
app.use(router);

Because otherwise the control is not even getting into cookieParser

Aritra Chakraborty
  • 12,123
  • 3
  • 26
  • 35
  • Thankyou, It's working perfectly.. can you suggest about signed cookies in nodejs – demo developers Aug 03 '18 at 18:39
  • cool. Signed cookies has a signature, so it can detect if some modified the cookie, to protect against session hijacking and kind of stuff. you can check it out here: https://stackoverflow.com/questions/11897965/what-are-signed-cookies-in-connect-expressjs. And if you like the answer you can mark it as accepted. So that others get helped :) – Aritra Chakraborty Aug 03 '18 at 18:43