0

I have a semi successful deployment to heroku but the calls to the server are saying CONNECTION REFUSED and I can't figure it out.

I can hit the route and it returns correctly in postman but not in production

Below is the services file (the ones with /api in front are the ones being called)enter image description here

`import http from "../utils/http-common";

class CountriesService {
  getAll() {
    return http.get("/api/country");
  }

  getAllCountries() {
    return http.get("/country/getAll");
  }

  getScroll(skip) {
    return http.get(`/country?skip=${skip}`);
  }

  get(id) {
    return http.get(`/country/${id}`);
  }

  create(countryForm) {
    return http.post("/country/new", countryForm);
  }

  edit(id, values) {
    return http.put(`/country/${id}`, values);
  }

  delete(id) {
    return http.delete(`/country/${id}`);
  }
  
}
export const getPostsPage = async (pageParam = 1, options = {}) => {
  const response = await http.get(`/api/country?_page=${pageParam}`, options)
  return response.data
}
export default new CountriesService();
`

This is the http-common

import axios from "axios";

var url;

process.env.REACT_APP_NODE_ENV === "production"
  ? (url = "")
  : (url = "http://localhost:5000/");

export default axios.create({
    baseURL: `${url}`,
    headers: {
        'Content-Type': 'application/json',
    },
    withCredentials: true,
});

this is the server file on the backend with a proxy from the frontend to localhost 5000

const path = require('path');

require("dotenv").config();
const express = require("express");
const app = express();
const mongoose = require("mongoose");
const cors = require("cors");
var morgan = require("morgan");
const MongoDBStore = require('connect-mongo');
const mongoSanitize = require('express-mongo-sanitize');
const helmet = require('helmet');
// Models
const User = require("./models/user.js");
// Passport Config
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const flash = require("connect-flash");
const session = require("express-session");
const cookieParser = require("cookie-parser");




// const { MongoClient } = require("mongodb");
const BodyParser = require("body-parser");
const { storage } = require("./imageupload/cloudinary");

const userAuthRoute = require("./routes/user.js");
const reviewRoute = require("./routes/review.js");
const countryRoute = require("./routes/country.js");
const cityRoute = require("./routes/city.js");
const activityRoute = require("./routes/activity.js");
const restaurantRoute = require("./routes/restaurant.js");
const dishesRoute = require('./routes/dishes.js');
const outdoorsRoute = require('./routes/outdoors.js');
const apiRoutes = require("./routes/api.js");
const cityReviewRoute = require("./routes/cityReviews.js");
const foodRoute = require('./routes/food.js');
const landmarkRoute = require('./routes/landmark.js');
const searchRoute = require('./routes/search.js');
const contactRoute = require('./routes/contact.js');





const db_url = process.env.DB_URL;
const PORT = process.env.PORT || 5000;
const secret = process.env.SESSION_SECRET;


// const client = new MongoClient(process.env.DB_URL);
const corsOptions = {
  origin: [
    "http://localhost:3000",
    "http://localhost:5000",
    "https://geopilot.herokuapp.com",],
  credentials: true,
  optionSuccessStatus:200,
};
app.use(cors(corsOptions));

app.use(express.json());
app.use(mongoSanitize({ replaceWith: "_" }));

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


app.use(morgan("tiny"));

// app.use(cookieParser());

mongoose
.connect(db_url)
.then(() => {
  console.log("database connection established successfully");
})
.catch((error) => console.log("this is the error", error));


const store = MongoDBStore.create({
  mongoUrl: process.env.DB_URL,
  ttl: 24 * 60 * 60 * 365, // 1 year
  autoRemove: 'native',
  crypto: {
    secret,
  },
});  


store.on('error', function(error) {
  console.log('SESSION STORE ERROR:', error);
});

// Session Settings

const sessionOptions = {
  name: "geopilot_session",
  secret: secret,
  store: store,
  resave: false,
  saveUninitialized: false,
  cookie: {
    samesite: false,
    // httpOnly: true,
    // secure: true,
    expires: Date.now() + 1000 * 60 * 60 * 24 * 365,
    maxAge: 1000 * 60 * 60 * 24 * 365,
  },
};



// app.set('trust proxy', 1) // trust first proxy

// Session Setup
app.use(session(sessionOptions));
// Helmet Setup
// app.use(helmet())



// Passport Middleware
app.use(passport.initialize());
app.use(passport.session());

passport.use(new LocalStrategy(User.authenticate()));

passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());


// Routes
app.use("/api/country/:countryId/reviews", reviewRoute);
app.use("/api/country", countryRoute);
app.use('/api/city', cityRoute);
app.use('/api/city/:cityId/reviews', cityReviewRoute);
app.use('/api/activity', activityRoute);
app.use('/api/restaurant', restaurantRoute);
app.use('/api/restaurant/:restaurantId/reviews', reviewRoute);
app.use('/api/landmark', landmarkRoute);
app.use('/api/landmark/:landmarkId/reviews', reviewRoute);
app.use('/api/food', foodRoute);
app.use('/api/dishes', dishesRoute);
app.use('/api/outdoor', outdoorsRoute);
app.use('/api/search', searchRoute);
app.use('/api/user', userAuthRoute);
app.use('/api/contact', contactRoute);

// ----------- Deployment -----------

__dirname = path.resolve();
if (process.env.NODE_ENV === "production") {
  app.use(express.static(path.join(__dirname, "../client/build")));

  app.get("*", (req, res) => {
    res.sendFile(path.resolve(__dirname, "../client", "build", "index.html"));
  });
}

// ----------- Deployment -----------



app.get("*", () => {
  res.send("PAGE NOT FOUND");
});

I tried requesting in postman which works.

I tried changing things in the package.json to help proxy or run server.

I tried to switch endpoints and change CORS policy but it won't work.

Isaiahm
  • 19
  • 4

1 Answers1

0

For anyone seeing this and is stuck, I changed http-common baseUrl to match my website url (not localhost) and then had to do "npm run build" to make it actually implement the changes.

Isaiahm
  • 19
  • 4