Hyperapp Webpack ServiceWorker - полностью игнорировать определенные URL-адреса (два сайта сожительства, один Hyperapp, один с нуля) - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь совместить два сайта.

Один сделан с Hyperapp и имеет работающее ПО.

Второй - простой демонстрационный сайт. (nginx conf сделал свою работу для перенаправления на хорошую папку после URL)

Сайт Hyperapp находится под https://mysite/home

Сайт Basi c находится под https://mysite/landing, но перенаправляется https://mysite/ ( это гиперапп, который делает это перенаправление )

Когда я переключаюсь между обоими, https://mysite/home поставить свой SW, и когда я go до https://mysite/landing, SW перехватывает URL и перенаправляет на мой 404 не найденный компонент.

My SW conf в webpack.config:

new SWPrecacheWebpackPlugin({
    // By default, a cache-busting query parameter is appended to requests
    // used to populate the caches, to ensure the responses are fresh.
    // If a URL is already hashed by Webpack, then there is no concern
    // about it being stale, and the cache-busting can be skipped.
    dontCacheBustUrlsMatching: /\.\w{8}\./,
    filename: 'service-worker.js',
    logger(message) {
        if (message.indexOf('Total precache size is') === 0) {
            // This message occurs for every build and is a bit too noisy.
            return;
        }
        if (message.indexOf('Skipping static resource') === 0) {
            // This message obscures real errors so we ignore it.
            // https://github.com/facebookincubator/create-react-app/issues/2612
            return;
        }
        console.log(message);
    },
    minify: true,
    // For unknown URLs, fallback to the index page
    navigateFallback: publicUrl + '/index.html',
    // Ignores URLs starting from /__ (useful for Firebase):
    // https://github.com/facebookincubator/create-react-app/issues/2237#issuecomment-302693219
    // navigateFallbackWhitelist: [/^(?!\/__).*/],
    navigateFallbackWhitelist: [/^(?!\/__).*/, /^((?!application).)*$/gm, /^((?!sport).)*$/gm, /^((?!biologie).)*$/gm, /^((?!landing).)*$/gm],
    // Don't precache sourcemaps (they're large) and build asset manifest:
    staticFileGlobsIgnorePatterns: [/\.map$/, /asset-manifest\.json$/]
}),

Но я не могу игнорировать /landing.

Единственное, что я нашел для этого, - это сделать маршрут

<Route path={['/landing', '/sport', '/biologie', '/application']}>
    {() => <PublicUnregisterSW />}
</Route>

И отмените регистрацию ПО самостоятельно:

var swFound = false;
navigator.serviceWorker.getRegistrations().then(function(registrations) {
    console.log('registrations  = ', registrations);
    for (var registration of registrations) {
        registration.unregister();
        swFound = true;
    }
    if (swFound) {
        window.location.reload();
    }
});

Любая помощь в правильной настройке ПО Webpack для полного игнорирования определенных URL-адресов? Или я просто делаю это неправильно.

Спасибо.

...