'CORS in node blocks POSTMAN to get data?

I'm using POSTMAN dev tool to test this API :

http://localhost:3000/users

and I have this express.js script :

const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const mongoConfig = require("./config/mongodb.config");
var bodyParser = require("body-parser");
// Routers
const userRouter = require("./core/user/user.route");

const app = express();
const port = process.env.PORT || 3000;
const URI = mongoConfig.mongoURI;
const connectionOptions = mongoConfig.connectionOption;

// Connect Mongo Atlas database
mongoose
  .connect(URI, connectionOptions)
  .then(() => {
    console.log("Connection is established successfully ...");
  })
  .catch((err) => {
    console.error(err);
  });

app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.json());
app.use(cors);

app.use("/users", userRouter);

app.listen(port, () => {
  console.log("The server is running on port", `${port}`);
});

The problem is when I remove CORS :

// app.use(cors);

POSTMAN can get data but when I add CORS it blocks and returns this stack trace :

Could not get any response
There was an error connecting to http://localhost:3000/users.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Proxy configured incorrectly
Ensure that proxy is configured correctly in Settings > Proxy
Request timeout:
Change request timeout in Settings > General

As far as I know, POSTMAN is dev tool and CORS is related only with a browser but I did not understand the reason behind it.



Solution 1:[1]

After debugging my server.js I found the bug was inside my server and it's not related to POSTMAN.

The problem is using cors before user using my routers will block the server ( unlimited looping ).

So when I changed this code :

app.use(cors);
app.use(express.json());
app.use("/users", userRouter);

To

app.use("/users", userRouter);
app.use(cors);
app.use(express.json());

The issue is solved but I did not understand why and what happens exactly inside the server.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Menai Ala Eddine - Aladdin