#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).