Неопределенная конечная точка http://localhost:8010/undefined/

#javascript #express #axios #endpoint

Вопрос:

Я пытаюсь отправить данные из интерфейса в серверную часть. Вот мой фронт:

 import axios from 'axios'

const api = axios.create({
  baseURL: `${process.env.BASE_FRONT_URL}`, // process.env.BASE_FRONT_URL = http://localhost:8010
})


export const postTip = async (payload) => {
  try {
    const { data } = await api.post(`post-tip`, payload);
    return data;
  } catch (e) {
    return [];
  }
};
 

А вот и бэк-энд:

 const router = require('express').Router();

const tipController = require('../controllers/tips/tipController')

router.post('post-tip', tipController.postTip);
 

Эта функция tipController.postTip на самом деле просто получает и отображает данные, но когда я запускаю эту конечную точку, я получаю ошибку: POST http://localhost:8010/undefined/post-tip 404 (Not Found) . Итак, что не так с конечной точкой и как я могу заставить ее работать? Кроме того, я понятия не имею, откуда это undefined взялось? Я что-то упускаю?

Комментарии:

1. Also, I have no idea, where does this undefined come from? Вероятно, от process.env.BASE_FRONT_URL

2. Я написал комментарий — // process.env.BASE_FRONT_URL = http://localhost:8010

3. это может быть не определено во время выполнения, даже если вы думаете, что это так. попробуйте baseURL: process.env.BASE_FRONT_URL || 'foo-bar', и посмотрите undefined , заменен ли он на foo-bar

4. Нет, это process.env.BASE_FRONT_URL работает правильно, я только что проверил

Ответ №1:

Я обнаружил свою ошибку. На самом деле process.env.BASE_FRONT_URL так и было на самом деле undefined , так что я сделал это так:

 import axios from 'axios'

const api = axios.create({
  baseURL: 'http://localhost:8084',
})


export const postTip = async (payload) => {
  try {
    const { data } = await api.post(`post-tip`, payload);
    return data;
  } catch (e) {
    return [];
  }
};
 

Но самое главное, что на серверной части я должен использовать один и тот же порт (8084).