VueJS + Webpack Dev Server не может выполнить горячую перезагрузку URL-путей.

Мое приложение работает в подкаталоге http://localhost:8080/admin_suffix

suffix переменная ENV, которую я могу изменить и определить в файле.env.

Как только я запустил сервер WebPack, доступ к http://localhost:8080/admin_suffix работает.

Работает также нажатие на гиперссылки в SPA, которые указывают на другие подпути. Например, я могу перейти к http://localhost:8080/admin_suffix/subdirectory

Тем не менее, когда я нажимаю перезагрузить http://localhost:8080/admin_suffix/subdirectory, я получу ошибку "Не удается получить /admin_suffix/ подкаталог"

Я также не могу ввести подпуть в браузер напрямую, чтобы загрузить страницу. Работает только `` http://localhost:8080/admin_suffix.

Моя конфигурация следующая:

webpack.base.config.js:

  entry: {
    main: './src/main',
    vendors: './src/vendors'
  },
  devServer: {
        host: '0.0.0.0',
        disableHostCheck: true
  },
  output: {
    path: path.join(__dirname, '../dist')
  }

webpack.dev.config.js:

module.exports = merge(webpackBaseConfig, {
  output: {
    publicPath: '/',
    filename: '[name].js',
    chunkFilename: '[name].chunk.js'
  }
});

SRC /main.js:

const RouterConfig = {
    mode: 'history',
    routes: Routers,
    base: '/admin_suffix/'
}

1 ответ

Включить devServer.historyApiFallback в webpack.base.config.js:

devServer: {
  historyApiFallback: true,
  // ...
},

Это настраивает webpack-dev-server отступить к index.html когда маршрут не найден (404).

Приложение Vue и маршрутизатор инициализируются с главной страницы (index.html), поэтому обновление страницы в подчиненном маршруте обычно приводит к 404 потому что маршрутизатор еще не был бы настроен. Однако упомянутая выше резервная конфигурация приведет к index.html вместо этого, что позволяет настроить маршрутизатор и впоследствии выполнить подчиненный маршрут.

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