WAVE(Web Accessibility Evaluation Tool)拡張機能を開くと、ServiceWorkerがChrome)でこのエラーをスローしています。
Uncaught(in promise)TypeError:リクエストスキーム 'chrome-extension'はsw.js:52(匿名)@ sw.js:52 Promise.then(非同期)(匿名)@ sw.js:50 Promise.then( async)(anonymous)@ sw.js:45 Promise.then(async)(anonymous)@ sw.js:38
私のサービスワーカーコードは次のとおりです。
(function () {
'use strict';
var consoleLog;
var writeToConsole;
const CACHE_NAME = '20180307110051';
const CACHE_FILES = [
'https://fonts.gstatic.com/s/notosans/v6/9Z3uUWMRR7crzm1TjRicDv79_ZuUxCigM2DespTnFaw.woff2',
'https://fonts.gstatic.com/s/notosans/v6/ByLA_FLEa-16SpQuTcQn4Igp9Q8gbYrhqGlRav_IXfk.woff2',
'https://fonts.gstatic.com/s/notosans/v6/LeFlHvsZjXu2c3ZRgBq9nJBw1xU1rKptJj_0jans920.woff2',
'https://fonts.gstatic.com/s/notosans/v6/PIbvSEyHEdL91QLOQRnZ1xampu5_7CjHW5spxoeN3Vs.woff2',
'https://fonts.gstatic.com/s/materialicons/v22/2fcrYFNaTjcS6g4U3t-Y5ZjZjT5FdEJ140U2DJYC3mY.woff2',
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2',
'favicon.20180205072319.ico',
'favicons/Android-chrome-512x512.20180211120531.png',
'favicons/Android-chrome-192x192.20180211120531.png',
'offline.html'
];
// for debugging:
writeToConsole = false;
consoleLog = function (message) {
if (writeToConsole) {
console.log(message);
}
};
// https://stackoverflow.com/questions/37117933/service-workers-not-updating
self.addEventListener('install', function (e) {
e.waitUntil(
Promise.all([caches.open(CACHE_NAME), self.skipWaiting()]).then(function (storage) {
var static_cache = storage[0];
return Promise.all([static_cache.addAll(CACHE_FILES)]);
})
);
});
// intercept network requests:
self.addEventListener('fetch', function (event) {
consoleLog('Fetch event for ' + event.request.url);
event.respondWith(
caches.match(event.request).then(function (response) {
if (response) {
consoleLog('Found ' + event.request.url + ' in cache');
return response;
}
consoleLog('Network request for ' + event.request.url);
// add fetched files to the cache:
return fetch(event.request.clone()).then(function (response) {
// Respond with custom 404 page
if (response.status === 404) {
return caches.match('error?status=404');
}
return caches.open(CACHE_NAME).then(function (cache) {
if (event.request.url.indexOf('test') < 0) {
cache.put(event.request.url, response.clone());
}
return response;
}).catch(function () {
console.log("Uncaught (in promise) TypeError: Request scheme 'chrome-extension' is unsupported");
});
});
}).catch(function (error) {
// respond with custom offline page:
consoleLog('Error, ' + error);
// Really need an offline page here:
return caches.match('offline.html');
})
);
});
// delete unused caches
// https://stackoverflow.com/questions/37117933/service-workers-not-updating
self.addEventListener('activate', function (e) {
e.waitUntil(
Promise.all([
self.clients.claim(),
caches.keys().then(function (cacheNames) {
return Promise.all(
cacheNames.map(function (cacheName) {
if (cacheName !== CACHE_NAME) {
console.log('deleting', cacheName);
return caches.delete(cacheName);
}
})
);
})
])
);
});
}());
問題の性質とその修正方法がわかりません。助けてくれてありがとう!
WAVEにはサイトにコードが含まれており、サイトはchrome-extension:// xyzで始まるURLを使用してWAVE拡張機能自体にリクエストを送信します。このリクエストはキャッシュされていないため、サービスはこのリクエストをインターセプトし、自分でフェッチしたいと考えています。ただし、プロトコル/リクエストスキームchrome-extension://のURLはServiceWorkerでは許可されていません。
したがって、これらのWAVEリクエストをServiceWorkerで処理することはおそらく望ましくありません。次のようなものでそれらをスキップします
if(!(event.request.url.indexOf('http') === 0)){
//skip request
}
**インストールされているためですchrome拡張機能**私の場合はwappalyzerでした