【问题标题】:JavaScript function does consol.log(var) but doesn't var2 = varJavaScript 函数执行 console.log(var) 但不执行 var2 = var
【发布时间】:2020-08-01 07:02:07
【问题描述】:

我遵循本教程:https://developers.google.com/web/fundamentals/codelabs/push-notifications#notification_click 并将其实现到 VueJS。

在创建的钩子上,我运行这个函数:

register() {
      if ("serviceWorker" in navigator && "PushManager" in window) {
        console.log("Service Worker and Push is supported");

        navigator.serviceWorker
          .register("/sw.js")
          .then(function (swReg) {
            console.log("Service Worker is registered", swReg);
            swRegistration = swReg;
          })
          .catch(function (error) {
            console.error("Service Worker Error", error);
          });
      } else {
        console.warn("Push messaging is not supported");
        pushButton.textContent = "Push Not Supported";
      }
    }

我在 Chrome、Safari 和 Firefox 中的控制台打印:

"Service Worker and Push is supported"
"Service Worker is registered >ServiceWorkerRegistration"
"Service Worker Error ReferenceError: swRegistration is not defined"

有谁知道为什么 swReg 可以被记录,但 swRegistration 没有被分配?

.then(function (swReg) {
                console.log("Service Worker is registered", swReg);
                swRegistration = swReg;

【问题讨论】:

  • 严格模式javascript错误。

标签: javascript vue.js promise push-notification es6-promise


【解决方案1】:

你应该先声明 swRegistration,你不会面临同样的问题 swReg 的问题,因为它是注册承诺的结果。

register() {
      let swRegistration = null;
      if ("serviceWorker" in navigator && "PushManager" in window) {
        console.log("Service Worker and Push is supported");

        navigator.serviceWorker
          .register("/sw.js")
          .then(function (swReg) {
            console.log("Service Worker is registered", swReg);
            swRegistration = swReg;
          })
          .catch(function (error) {
            console.error("Service Worker Error", error);
          });
      } else {
        console.warn("Push messaging is not supported");
        pushButton.textContent = "Push Not Supported";
      }
    }

【讨论】:

    【解决方案2】:

    可能是因为swRegistration 没有定义?尝试在您的 sn-p 顶部添加let swRegistration,一切都会好的。 享受吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-10
      • 2020-10-26
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      相关资源
      最近更新 更多