Home > database >  NextJS: Axios or Fetch post and get method result wrong URL path api
NextJS: Axios or Fetch post and get method result wrong URL path api

Time:04-25

here I want to make a post method on API but when I call the function it posts to the wrong path of API

here is my script for the post

 //Creating Order
  const createOrder = async (data) => {
    try {
      const res = await axios.post(
        `${process.env.API_ROOT}/api/orders` ||
          `${process.env.LOCAL_URL}/api/orders`,
        data
      );
      if (res.status === 201) {
        router.push(`/api/orders/${res.data._id}`);
        dispatch(reset());
      }
    } catch (err) {
      console.log(err);
    }
  };

I call that function when approve from Paypal and using the order button, but when I press the button the URL API path change to something ${process.env.API_ROOT}/undefined/api/orders or ${process.env.LOCAL_URL}/undefined/api/orders what cause this problem ?

enter image description here

but when im using something like its working

//Creating Order
  const createOrder = async (data) => {
    try {
      const res = await axios.post(`/api/orders`,data);  <=====  its working
      if (res.status === 201) {
        router.push(`/api/orders/${res.data._id}`);
        dispatch(reset());
      }
    } catch (err) {
      console.log(err);
    }
  };

CodePudding user response:

That is the front-end part of the code and your process.env.API_ROOT resolves to undefined. However there is a way to use process.env variables in the frontend code, you just need to prefix them with NEXT_PUBLIC like this:

process.env.NEXT_PUBLIC_LOCAL_URL
process.env.NEXT_PUBLIC_API_ROOT

More info in the official documentation

  • Related