__webpack_public_path__ не работает после перезагрузки страницы - PullRequest
0 голосов
/ 02 апреля 2019

Мы работаем над приложением Vue.js, которое построено с помощью веб-пакета.Требование заключается в том, что наше приложение должно быть доступно не только по базовому пути /, но и по специальному пути, чтобы приложение могло быть доступно рядом с другими службами.С помощью веб-пакетов \__webpack_public_path__ я смог на лету установить базовый путь относительно указанного базового пути, например, если текущий путь содержит /foo/, базовый путь должен начинаться с .../foo/.

* 1006.* При навигации по приложению все выглядит хорошо, пока я открываю приложение по базовому пути.Проблема в том, что после перехода к любому дополнительному пути и перезагрузки страницы, файлы не могут быть найдены.Сервер сначала предоставит index.html, и там мне нужно использовать относительные пути, поскольку базовый путь должен определяться динамически.Но если откроется любой другой путь, кроме базового, относительные пути в index.html не будут указывать на правильный bundle.js, и \__webpack_public_path__ не будет установлен ...

В настоящее время мы имеемполучил две точки входа в наш конфиг веб-пакета.Первый - это JS-файл, в котором глобальная переменная \__webpack_public_path__ будет установлена ​​относительно текущего посещенного URL-адреса.Допустим, базовый путь должен начинаться с /foo/, а посещенный URL-адрес - https://www.host.com/some/path/foo/sub/sub1.Таким образом, относительно базовый путь будет /some/path/foo/, а активы будут найдены по адресу /some/path/foo/assets.Все остальные пути, используемые в конфигурации веб-пакета, как в загрузчике файлов или любом другом плагине, являются относительными.

// webpack.config.js
...
module.exports = (env, argv) => ({
    ...
    entry: ['@babel/polyfill', './src/main/js/constants/webpack-public-path.js', './src/main/js/index.js'],
    output: {
        filename: 'assets/js/bundle.js',
        path: path.resolve(__dirname, relativeOutputPath),
        publicPath: '/'
    },
    module: {
        ...
        {
            test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
            loader: 'file-loader',
            options: {
                name: 'assets/fonts/[name].[ext]'
            }
        }
        ...
    },
    ...
});


// webpack-public-path.js
__webpack_public_path__ = (() => {
    const BASE_PATH = '/foo/';
    let path = window.location.pathname;
    return path.includes(BASE_PATH) ? path.substring(0, path.indexOf(BASE_PATH) + BASE_PATH.length) : '/';
})();

Кто-нибудь когда-либо сталкивался с подобной проблемой?Возможно ли, что относительные пути в index.html могут быть определены позже или могут быть определены во время сборки с помощью веб-пакета?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...