hexoのpwa化pluginが動かなかくなった話

yupix

はじめに

まず初めに、このサイトはhexoというprojectを用いて作成されているのですが、そのhexoにはhexo-pwa という物があり、これを使うことで簡単にpwaに対応することができます、ですが大本が既に更新されていない状態になっており2020/12月頃には既に動作しなかった覚えがありますが、 私はそのforkであるhexo-pwa を使わせていただいていました。ですが少し前にhexo v5.4.0 がリリースされました。これには依存関係の更新としてjs-yamlという物が含まれていました。そしてjs-yamlの更新でsafeloadがデフォルトで使用されるようになった というのが今回の問題点です。そちらを理解しつつご覧ください。

直し方

はじめにでも言った通り、今回の不具合というかはjs-yamlにはsafeloadという機能があり、hexo-pwaではそれを使用していました。READMEのconfigの書き方を引用してみましょう。

1
2
3
4
5
6
7
    routes:
      - pattern: !!js/regexp /hm.baidu.com/
        strategy: networkOnly
      - pattern: !!js/regexp /.*\.(js|css|jpg|jpeg|png|gif)$/
        strategy: cacheFirst
      - pattern: !!js/regexp /\//
        strategy: networkFirst

引用元: https://github.com/lavas-project/hexo-pwa

このように書かれているわけですが、引用したymlにもある!!js/regexpという部分がsafeloadを使うという明言です、そして最初にも言った通り、safeloadはjs-yamlの更新で デフォルトで使用するようになったわけですつまり、これは既にjs-yamlでは存在しないtagになったわけです、そしてエラーでは存在しないtagだという事を示唆しています。 なので!!js/regexpを削除し、以下のようにすると正常に動作します。

1
2
3
4
5
6
7
    routes:
      - pattern: /hm.baidu.com/
        strategy: networkOnly
      - pattern: /.*\.(js|css|jpg|jpeg|png|gif)$/
        strategy: cacheFirst
      - pattern: /\//
        strategy: networkFirst

これらの点を変更し、依存関係を更新したforkを作成したので是非使ってみてください。 hexo-pwa

最後に

hexoはとても軽量で、便利な物ですが、plugin等の多くは更新されていない事が多いです。他にもwordpressの用に多機能なpluginは少なく、 自分で作成するなどしないと使えない機能等があります。なので好き嫌いが分かれそうですが、好きという方で助かったという方がいれば幸いです。

Built with Hugo
テーマ StackJimmy によって設計されています。