hiteshchoudhary / chai-backend

A video series on chai aur code youtube channel
5.06k stars 760 forks source link

Cannot POST /api/v1/users/register #101

Closed paul-abhirup closed 6 months ago

paul-abhirup commented 6 months ago

i dont know what is wrong console is showing mongoDB is been connected server is runnning at port 8000 Yet cant make post request in postman

//app.js

import express from "express";
import cors from "cors";
import cookieParser from "cookie-parser";

const app = express();

// cross orign resource pairing 
app.use(cors({
  orgin: process.env.CORS_ORIGIN,
  credentials: true
})) 
app.use(express.json({limit: "16kb"}))
app.use(express.urlencoded({
  extended: true,
  limit: "16kb"
}))
app.use(express.static("public"))
app.use(cookieParser())

//routes import 
import userRouter from "./routes/user.routes.js"

//routes declaration
app.use("/api/v1/users", userRouter)
// // https://localhost:3000/api/v1/users/register

export { app }
//user.controller.js

import { asyncHandler } from "../utils/asyncHandler.js";

const registerUser = asyncHandler( async (req,res) => {
  return res.status(200).json({
    message: "ok"
  })
})

export { registerUser }
//asyncHandler.js

// using promise method 
const asyncHandler = () => {
  (req,res,next) => {
    Promise.resolve(requestHandler(req,res,next)).catch((err) => next(err))
  }
}

// learn about node.js api errors

export {asyncHandler}
//user.routes.js

import { Router } from "express";
import { registerUser } from "../controllers/user.controller.js";

const router = Router();

// Add middleware to parse the request body
// router.use(express.json());

router.route("/register").post(registerUser); 

export default router;
msaad53407 commented 6 months ago

Have you imported the app in the index file. I was also having a similar problem and turn out that I had not imported my app file in index file. So give it a shot If you hadn't already

vikramhamal commented 6 months ago

//app.js

import express from "express"; import cors from "cors"; import cookieParser from "cookie-parser";

const app = express();

// cross orign resource pairing app.use(cors({ orgin: process.env.CORS_ORIGIN, credentials: true })) app.use(express.json({limit: "16kb"})) app.use(express.urlencoded({ extended: true, limit: "16kb" })) app.use(express.static("public")) app.use(cookieParser())

//routes import import userRouter from "./routes/user.routes.js"

//routes declaration app.use("/api/v1/users", userRouter) // // https://localhost:3000/api/v1/users/register

export { app }

There is some mistake in your code . Please check origin spelling in your code .

vikramhamal commented 6 months ago

Check app.use(cors({ orgin: process.env.CORS_ORIGIN, credentials: true })) origin spelling mistake

paul-abhirup commented 6 months ago

Check app.use(cors({ orgin: process.env.CORS_ORIGIN, credentials: true })) origin spelling mistake

yup fixed it but still same issue

paul-abhirup commented 6 months ago

Have you imported the app in the index file. I was also having a similar problem and turn out that I had not imported my app file in index file. So give it a shot If you hadn't already

tried it

import {app} from "./app.js"

instead of const app = express() but it is giving error like Route.post() requires a callback function but got a [object Undefined]

paul-abhirup commented 6 months ago

Have you imported the app in the index file. I was also having a similar problem and turn out that I had not imported my app file in index file. So give it a shot If you hadn't already

i am also thinking that my code is having issue with this app.js file

paul-abhirup commented 6 months ago

thank You everyone I had some issue in the asyncHandler.js file . There i forgot to take requestHandler as argument to function

const asyncHandler = (requestHandler) => {
  return (req,res,next) => {
    Promise.resolve(requestHandler(req,res,next)).catch((err) => next(err))
  }
}

so when i was importing app.js it was showing error as Route.post() blah blah I learned as the codebase in this app is very distributed so its important to check every interconnecting file structure.