#Storefront throw an error when I use changeRegionId

7 messages · Page 1 of 1 (latest)

kindred pecan
#

I'm trying to write an compoment to auto switch currency base on customer's country code. I dont know why the server always return error on the first load.

*Unhandled Runtime Error
Error: Request failed with status code 500

Call Stack
createError
node_modules/@medusajs/medusa-js/node_modules/axios/lib/core/createError.js (16:0)
settle
node_modules/@medusajs/medusa-js/node_modules/axios/lib/core/settle.js (17:0)
XMLHttpRequest.onloadend
node_modules/@medusajs/medusa-js/node_modules/axios/lib/adapters/xhr.js (66:0)*

#

My code

`import { useEffect, useState } from 'react';
import { useCart } from 'medusa-react';
import Cookies from 'universal-cookie';

interface GeoData {
country_code: string;
}

const CurrencySwitcher = () => {
const { cart, updateCart } = useCart();
const [visited, setVisited] = useState(false);
const cookies = new Cookies();

const changeRegionId = (regionId: string) => {
cart?.id && updateCart.mutate({ region_id: regionId });
};

useEffect(() => {
const handleGeoIp = (geoData: GeoData) => {
const { country_code } = geoData;
const hasVisited = cookies.get('visited');

  if (!hasVisited) {
    switch (country_code) {
      case 'VN':
        changeRegionId('reg_01H1KEF7D8MNAGQNB4JG41FWPS');
        cookies.set('currency', 'VND', { path: '/', maxAge: 7 * 24 * 60 * 60 });
        break;
      default:
        changeRegionId('reg_01H1KEF7D8MNAGQNB4JG41FWPS');
        cookies.set('currency', 'USD', { path: '/', maxAge: 7 * 24 * 60 * 60 });
        break;
    }

    cookies.set('visited', 'true', { path: '/', maxAge: 7 * 24 * 60 * 60 });
    setVisited(true);
  }
};

const script = document.createElement('script');
script.src = 'https://get.geojs.io/v1/ip/geo.js';
script.async = true;
document.body.appendChild(script);

(window as any).geoip = (geoData: GeoData) => {
  handleGeoIp(geoData);
};

return () => {
  document.body.removeChild(script);
  delete (window as any).geoip;
};

}, [cart?.id, updateCart, cookies]);

return null;
};

export default CurrencySwitcher;`

grizzled river
#

You need to show the error from the backend console

kindred pecan
grizzled river
#

This is error from frontend. We'll need the error from backend

kindred pecan
grizzled river
#

I suggest to change database to postgres