Я первым 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);
Любая идея или предложение? Я схожу с ума.
Спасибо.
С уважением, Т.
Я вижу только стандартный код VueJS index.html. Когда я пытаюсь перейти по ссылкам на файл .css, я просто снова возвращаюсь к index.html, однако адрес в адресной строке меняется на имя маршрута, которым я был, плюс имя файла .css (пример: / docs/1.0/css/chunk-vendors.e0a049f6.css ---- где /docs/1.0/ — фактический маршрут)
Этот комментарий звучит так, как будто приложение обслуживается из /docs/1.0/, а не из корня домена. Это правильно?
Хм. Я согласен с вашим ответом. Но дело в том, что весь контент заливался в корень домена. Как он может пойти по этому пути? Где я могу это изменить?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ошибка пустой страницы обычно возникает при обслуживании приложения откуда-то, кроме корня домена. В этом случае 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.
привет. когда вы просматриваете исходный код пустой страницы, что вы видите? что происходит, когда вы нажимаете/переходите по ссылкам .js/.css оттуда?