मैं सेवा कार्यकर्ता की स्थापना कैसे रद्द करूं?


161

/serviceworker.jsमेरे रूट डायरेक्टरी से हटाने के बाद , क्रोम अभी भी सेवा कार्यकर्ता को चलाता है जिसे मैंने अपने वेबरूट से हटा दिया था। मैं अपनी वेबसाइट और Chrome से सेवा कार्यकर्ता की स्थापना कैसे रद्द कर सकता हूं ताकि मैं अपनी वेबसाइट पर वापस लॉग इन कर सकूं?

मैंने सेवा कार्य के कैश तंत्र में समस्या को ट्रैक कर लिया है और मैं अभी इसे निकालना चाहता हूं जब तक कि मेरे पास इसे डीबग करने का समय नहीं है। वह लॉगिन स्क्रिप्ट जो मैं Google के सर्वरों के लिए उन्हें अपने Google खाते में लॉगिन करने के लिए पुनर्निर्देशित कर रहा हूं। लेकिन मुझे सभी लॉगिन से प्राप्त होता है। एफपी पृष्ठ एक ERR_FAILEDसंदेश है।


2
मैं फ़ायरफ़ॉक्स में एक ही मुद्दा है।
कोस्टा

जवाबों:


309

प्रोग्राम वर्कर्स को सेवा से हटाना

आप इस तरह से प्रोग्राम वर्कर को हटा सकते हैं:

navigator.serviceWorker.getRegistrations().then(function(registrations) {
 for(let registration of registrations) {
  registration.unregister()
} })

डॉक्स: getRegistrations , unregister

उपयोगकर्ता इंटरफ़ेस के माध्यम से सेवा कार्यकर्ताओं को निकालना

आप Chrome Devtools में एप्लिकेशन टैब के तहत सेवा कर्मचारियों को भी निकाल सकते हैं।


2
मुझे "सख्त का उपयोग करें" जोड़ना था; इस कोड से पहले यह काम करने के लिए।
कोडकामी

8
क्या इसके आसपास कोई समय-आधारित है? किसी उपयोगकर्ता ने एक बार विज़िट किया, कार्यकर्ता को पंजीकृत किया, और तब से वापस नहीं आया, क्या मुझे इस स्निपेट को हमेशा के लिए अपने कोडबेस में रखने की आवश्यकता है?
loganfsmyth


10
मेरे पास एक ब्लॉग पोस्ट है जो इस और अन्य सेवा कार्यकर्ता को हटाता है / विकल्पों की स्थापना हटाता है love2dev.com/blog/how-to-uninstall-a-service-worker
क्रिस लव

3
वह कैसे मदद करेगा? पृष्ठ पहले से इंस्टॉल किए गए कार्यकर्ता द्वारा कैश किया गया है और आपकी नई स्क्रिप्ट कभी भी उपयोगकर्ताओं द्वारा नहीं ली जाएगी।
riv

107

आप URL पर भी जा सकते हैं: chrome: // serviceworker-internals / और वहां से एक serviceworker को अपंजीकृत करें।


9
आप इसे सभी सांकेतिक शब्दों में बदलना करने के लिए देव कंसोल में टाइप कर सकते हैं। document.querySelectorAll(".unregister").forEach(item=>item.click())
सेन

हालांकि, यदि आपके पास अन्य आगंतुक हैं जिन्हें आपको (दोस्तों, उपयोगकर्ताओं, परियोजना प्रबंधकों आदि) को अपंजीकृत करने की आवश्यकता है, तो ऊपर दिया गया जवाब (डैनियल हेर द्वारा) एक प्रभावी समाधान का अधिक है। आपको प्रत्येक परीक्षण के लिए iOS, Android, macOS, Windows 10 के फ्लेवर में फ़ायरफ़ॉक्स, एज और सफारी भी मिला है।
स्टीवन वेंटिमिग्लिया

$$ ('। unregister')। forEach (आइटम => item.click ())
Travnikov.dev

37

आप के माध्यम से यह कर सकते हैं क्रोम डेवलपर टूल के साथ ही प्रोग्राम के

  1. सभी रनिंग इंस्टेंस या सर्विस वर्कर टाइप करके खोजें

    chrome: // ServiceWorker-internals /

    एक नए टैब में और उसके बाद उस सर्विसवर्क को चुनें जिसे आप अपंजीकृत करना चाहते हैं।

  2. डेवलपर टूल (F12) खोलें और एप्लिकेशन चुनें। तो कोई

    क्लियर स्टोरेज चुनें -> Unregister सर्विस वर्कर

    या

    सेवा कार्यकर्ताओं का चयन करें -> पुनः लोड पर अद्यतन चुनें

  3. प्रोग्राम के

if(window.navigator && navigator.serviceWorker) {
  navigator.serviceWorker.getRegistrations()
  .then(function(registrations) {
    for(let registration of registrations) {
      registration.unregister();
    }
  });
}


22

Google Chrome में, आप डेवलपर टूल (F12) -> एप्लिकेशन -> सेवा कार्यकर्ता पर जा सकते हैं और उस विशिष्ट डोमेन के लिए सूची से सेवा श्रमिकों की अपंजीकृत कर सकते हैं ।

स्क्रीनशॉट

यह विधि एक साइट के विकास मोड में प्रभावी है और ज्यादातर वे localhostजिस पर आप अन्य परियोजना के विकास के लिए आवश्यकता हो सकती है।


5

आपको अपने उपकरणों में दो API का पता लगाना चाहिए: getRegistrations और getRegistration । सेवा-कार्यकर्ता के पास सभी प्लेटफार्मों में एपीआई का एक अनूठा सेट नहीं है। उदाहरण के लिए, कुछ ब्राउज़रों में केवल a navigator.serviceWorker.getRegistration, no होता है navigator.serviceWorker.getRegistrations। तो आपको दोनों के साथ विचार करना चाहिए।


3

FYI करें, यदि आप MacOS Safari ब्राउज़र का उपयोग कर रहे हैं , तो सेवा कार्यकर्ता को जबरन अनरजिस्टर्ड करने का एक तरीका है (सफारी 12.1 के लिए चरण और चित्र):

  1. सफारी> वरीयताएँ ...> गोपनीयता> वेबसाइट डेटा प्रबंधित करें ... सफारी प्राथमिकताएं: गोपनीयता

  2. डोमेन नाम दर्ज करें (उदा। 'लोकलहोस्ट'), "निकालें" पर क्लिक करें सफारी वरीयताएँ: गोपनीयता: वेबसाइट डेटा का प्रबंधन

नोट: सेवा कार्यकर्ताओं के अलावा, यह भी सभी कैश, कुकीज़, और इस डोमेन के लिए डेटाबेस मिटा देगा।


लगता है कि यह काम नहीं करता है यदि सेवा कर्मचारियों को एक निजी विंडो के माध्यम से स्थापित किया गया था।
ऐरिस

3

दिए गए पहले से ही सही उत्तरों के अलावा, यदि आप SW कैश को हटाना चाहते हैं, तो आप निम्न विधि को लागू कर सकते हैं:

if ('caches' in window) {
    caches.keys()
      .then(function(keyList) {
          return Promise.all(keyList.map(function(key) {
              return caches.delete(key);
          }));
      })
}


इस लेख में और अधिक (पैराग्राफ: "एक सेवा कार्यकर्ता को अपंजीकृत करें")


एक और संभावना है, ब्राउज़र के माध्यम से, "कैश संग्रहण" अनुभाग तक पहुँचने और "साइट डेटा साफ़ करें" बटन पर क्लिक कर रहा है:

यहां छवि विवरण दर्ज करें


0

सुरक्षित रूप से सेवा कार्यकर्ता की स्थापना रद्द करें

if ('serviceWorker' in navigator) {
      navigator.serviceWorker.getRegistrations().then(function (registrations) {
        for (const registration of registrations) {
          // unregister service worker
          console.log('serviceWorker unregistered');
          registration.unregister();
        }
      });
    }

0

सेवा कार्यकर्ता पता लगाने के लिए:

navigator.serviceWorker.controller

सेवा कार्यकर्ता हटाने के लिए करने के लिए कोड:

navigator.serviceWorker.getRegistrations()
  .then(registrations => {
    registrations.forEach(registration => {
      registration.unregister();
    })
  });

  navigator.serviceWorker.getRegistrations().then(function(registrations) {
   for(let registration of registrations) {
    registration.unregister()
  } })

  if(window.navigator && navigator.serviceWorker) {
    navigator.serviceWorker.getRegistrations()
    .then(function(registrations) {
      for(let registration of registrations) {
        registration.unregister();
      }
    });
  }

  if ('caches' in window) {
      caches.keys()
        .then(function(keyList) {
            return Promise.all(keyList.map(function(key) {
                return caches.delete(key);
            }));
        })
  }

  if ('serviceWorker' in navigator) {
        navigator.serviceWorker.getRegistrations().then(function (registrations) {
          for (const registration of registrations) {
            // unregister service worker
            console.log('serviceWorker unregistered');
            registration.unregister();

            setTimeout(function(){
              console.log('trying redirect do');
              window.location.replace(window.location.href); // because without redirecting, first time on page load: still service worker will be available
            }, 3000);
          }
        });
      }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.