Пустая страница при обслуживании моего приложения (Vue Router 4 - Vue 3)

Я первым npm run build взял свое первое большое приложение Vue3 на тест-драйв реального сервера.

Итак, я получил файлы, загрузил их на свой VPS и удивился: сервер распознает пути маршрута только в том случае, если я перемещаюсь по кликам.

Если мне случится перезагрузить страницу или перейти непосредственно к URL-адресу, браузер выдаст ошибку. Я добавил код, указанный здесь: https://next.router.vuejs.org/guide/essentials/history-mode.html в мой .htaccess файл (я использую apache на Centos 7 и я использую CWP), но проблема остается, единственная разница в том, что вместо того, чтобы выдавать ошибку, он просто зависает на странице index.html, но без рендеринга какого-либо контента.

Я не могу понять, что я делаю неправильно.

Пожалуйста, проверьте мой код ниже относительно реализации Vue Router 4.

Я определяю все в файле main.js, например:

import { createRouter, createWebHistory } from "vue-router"
import Page from "./views/Page.vue"
import Content from "./views/Content.vue"
import BaseSection from "./components/BaseSection.vue"

//ROUTER
const router = createRouter({
    history: createWebHistory(),
    routes: [{
            path: "/",
            name: "Home",
            component: Page,
            meta: {
                title: 'Home'
            }
        },
        {
            path: "/docs/1.0/:title",
            component: Content,
            name: "docs"
        }
    ],
    scrollBehavior(to) {
        if (to.hash) {
            return {
                el: to.hash,
                behavior: 'smooth',
            }
        }
    }
});

app.use(router);

Любая идея или предложение? Я схожу с ума.

Спасибо.

С уважением, Т.

привет. когда вы просматриваете исходный код пустой страницы, что вы видите? что происходит, когда вы нажимаете/переходите по ссылкам .js/.css оттуда?

Dan 13.12.2020 23:15

Я вижу только стандартный код VueJS index.html. Когда я пытаюсь перейти по ссылкам на файл .css, я просто снова возвращаюсь к index.html, однако адрес в адресной строке меняется на имя маршрута, которым я был, плюс имя файла .css (пример: / docs/1.0/css/chunk-vendors.e0a049f6.css ---- где /docs/1.0/ — фактический маршрут)

Slaveworx 13.12.2020 23:28

Этот комментарий звучит так, как будто приложение обслуживается из /docs/1.0/, а не из корня домена. Это правильно?

Dan 13.12.2020 23:30

Хм. Я согласен с вашим ответом. Но дело в том, что весь контент заливался в корень домена. Как он может пойти по этому пути? Где я могу это изменить?

Slaveworx 13.12.2020 23:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
5 287
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Ошибка пустой страницы обычно возникает при обслуживании приложения откуда-то, кроме корня домена. В этом случае Vue CLI необходимо настроить соответствующим образом. Модифицируйте vue.config.js в корне проекта (создайте его, если его нет):

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? '/docs/1.0/'  // This is whatever your path from the root is
    : '/'
}

Подробнее о publicPathможно прочитать здесь

Убедитесь, что ваш .htaccess также находится в /docs/1.0/

Я исправил эту проблему, перейдя на порт, отличный от того, на котором он работает по умолчанию.

Например, если порт по умолчанию — localhost:8080, попробуйте

npm run serve -- --port 8085

Это самое быстрое решение, которое я нашел.

Это также может произойти, если вы забудете добавить () после createWebHistory.

Другие вопросы по теме