Использование JavaScript fetch() с php-файлом в приложении Vue, работающем на localhost-Relative URL problem
Правка: название вопроса изменено. Первоначальное название вопроса было: использование относительного 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

26.11.2020 05:56:02
Если вы используете vue cli
, то все, что вам нужно, это поместить ваш файл get-users.php
в папку public
и получить доступ к этому файлу без префикса public
следующим образом:
fetch('get-users.php')
Это будет работать, как и ожидалось, как для среды dev, так и для среды prod, поскольку на этапе сборки webpack скопирует все статические ресурсы из папки public
в папку dist
.