Использование JavaScript fetch() с php-файлом в приложении Vue, работающем на localhost-Relative URL problem


Использование JavaScript fetch() с php-файлом в приложении Vue, работающем на localhost-Relative URL problem

26.11.2020 05:29:07 Просмотров 47 Источник

Правка: название вопроса изменено. Первоначальное название вопроса было: использование относительного URL-адреса в приложении Vue, которое работает как в производстве , так и в разработке, но это оказалось не причиной моей проблемы (см. комментарии ниже).

Я перепробовал так много вещей, и все, что я хочу сделать, это использовать один относительный url-адрес в методе JavaScript fetch() и заставить его работать последовательно как в разработке, так и в производстве без необходимости изменять множество конфигурационных файлов или настроек webpack.

В двух словах я хочу fetch() файл get-users.php, который находится в том же каталоге, что и приложение — ничего особенного или сложного — просто php-файл, который получает некоторые данные из базы данных mysql на том же хосте.

Я могу заставить его работать в разработке, но затем он терпит неудачу в производстве (npm run build), или я могу заставить его работать в производстве, но затем он терпит неудачу в разработке (npm run serve). Причина, по которой он терпит неудачу, заключается в том, что относительный url-адрес в производстве является корнем папки dist, но относительный url-адрес в разработке является корнем папки проекта vue — это правильно?. Так, например, в разработке я могу использовать fetch(public/get-users.php), который отлично работает, но тогда в производстве папка dist не содержит папки public, поэтому я получаю ошибку 404. Я могу вручную скопировать и вставить папку public в папку dist после каждого fetch()1, но это просто кажется ненужным дополнительным шагом.

Часть проблемы заключается в том, что я не совсем понимаю, где должен находиться такой файл, как get-users.php. Я не возражаю, если мне придется поместить его в папки public или fetch()4, но когда я это делаю, он терпит неудачу в производстве из-за приведенного выше примера. Не мог бы кто-нибудь объяснить, пожалуйста, роль папки public в приложении vue CLI? Делает ли он что-то под капотом, что я не совсем понимаю? Я упускаю что-то очевидное? Это кажется такой тривиальной задачей, чтобы заставить это работать, но я бьюсь головой об стену здесь! Пожалуйста, помогите! :)

У вопроса есть решение - Посмотреть?

Ответы - Использование JavaScript fetch() с php-файлом в приложении Vue, работающем на localhost-Relative URL problem / Using JavaScript fetch() with a php file in a Vue app running on localhost - Relative URL problem

Eugene Karataev

26.11.2020 05:56:02

Если вы используете vue cli, то все, что вам нужно, это поместить ваш файл get-users.php в папку public и получить доступ к этому файлу без префикса public следующим образом:

fetch('get-users.php')

Это будет работать, как и ожидалось, как для среды dev, так и для среды prod, поскольку на этапе сборки webpack скопирует все статические ресурсы из папки public в папку dist.

Помочь в развитии проекта:
Закрыть X