Chupachar
@Chupachar
front-end dev

Почему браузер не может найти компоненты вне корневого маршрута после перезагрузки страницы?

Есть некий проект, который ранее работал на версии PHP 8.0, и возникла необходимость перейти на версию PHP 7.2. Проблема заключается в том, что на версии 8.0 сайт работал нормально (использовался vite), но при переходе на 7.2 (используется webpack.mix.js) возникает ошибка. Если мы находимся на корневом маршруте "/", то сайт работает даже после перезагрузки страницы, а если мы переходим на другой маршрут, отличный от корневого, например, "/test", и перезагружаем страницу, браузер выдает ошибку:
"Не удается найти компонент test, GET http://someSite/test 404 (Not Found)"
.
Вот мои основные настройки:
webpack.mix.js
const mix = require('laravel-mix');
require('mix-tailwindcss');

mix.js('resources/js/main.js', 'public/js').vue();
mix.sass('resources/sass/app.scss', 'public/css').tailwind();

web.php
<?php

use Illuminate\Support\Facades\Route;

Route::get('/{any}', function () {
    return view('app');
})->where("any",".*");


router.js
import { createRouter, createWebHistory } from 'vue-router';
import rootСomponent from './components/rootСomponent.vue';
import test from './components/test.vue';

const routes = [
    { path: '/', component: rootСomponent }, 
    { path: '/test', component: test },
];

const router = createRouter({
    history: createWebHistory(),
    routes,
});

export default router;


app.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}" style="background: #F0F0F0;">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Application form</title>
        <link href="{{asset('css/app.css')}}" rel="stylesheet">
        <!-- <link href="{{ mix('css/app.css') }}" rel="stylesheet"> -->
    </head>
    <body>
        <div id="app"></div>
        <script src="{{asset('js/main.js')}}"></script> 
        <!-- <script src="{{ mix('js/main.js') }}"></script>-->
    </body>
</html>


.htaccess
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
Chupachar
@Chupachar Автор вопроса
front-end dev
Проблема решена, суть была в том что в open server вкладка "Домены" у меня папка домена была корнем проекта \myProject, а правильно \myProject\public.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы