Я пытаюсь совместить два сайта.
Один сделан с 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-адресов? Или я просто делаю это неправильно.
Спасибо.