#javascript #vue.js #vue-router #vue-cli #vuejs3
#javascript #vue.js #vue-маршрутизатор #vue-cli #vuejs3
Вопрос:
Я первым 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);
Есть идеи или предложения? Я схожу с ума.
Спасибо.
С уважением, Т.
Комментарии:
1. привет. что вы видите, когда просматриваете источник пустой страницы? что происходит, когда вы нажимаете / переходите по ссылкам .js / .css оттуда?
2. Я вижу только стандартные VueJS index.html код. Когда я пытаюсь перейти по ссылкам на файлы .css, это просто приводит меня к index.html опять же, однако, адрес в адресной строке изменяется на имя маршрута, который я прошел, плюс имя файла .css (пример: /docs/1.0/css/chunk-vendors.e0a049f6.css —- где /docs/1.0/ — фактический маршрут)
3. Этот комментарий звучит так, как будто приложение обслуживается из /docs/1.0/ , а не из корня домена. Это верно?
4. Хммм. Я согласен с вашим ответом. Но дело в том, что весь контент был загружен в корень домена. Как он может предположить этот путь? Где я могу это изменить?
Ответ №1:
Ошибка пустой страницы обычно возникает при обслуживании приложения из другого места, кроме корня домена. В этом случае интерфейс командной строки Vue должен быть настроен соответствующим образом. Модификация 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/