【WSL2/clasp】WSL2上からclasp pushするとError: Looks like you are offline.と怒られる問題を回避する

こんにちは、しきゆらです。
今回は、タイトルの通りWSL2からclaspを使おうとするとofflineと怒られる問題が起こったのでこれを回避する方法をメモしておきます。

気が付くとWSL2からclasp pushをしようとすると、以下のようなエラーが出てしまってプッシュできない状態になっていました。
よくわからないですが、たまにプッシュできたりするので何が悪いのかよくわかりません。
WSLをインストールしなおしたりしても解決しませんでした。
また、調べてもそれっぽい生地が出てこないので「おま環」ぽい気がしています。

さて、これではWSL内で書いたGASをプッシュできません。
これを回避する方法をメモしておきます。

回避方法は単純で、Docker上からclasp pushをするだけ。
調べてみると、結構DockerでGASを管理したい人がいるようで、情報がそこそこありました。
ということで、プロジェクト諸々をDocker上にマウントしてコマンド実行できるようにしていきます。
なお、ここではGASをTypeScriptで書いたのちWebpackでビルドしたものをclaspコマンドでプッシュする流れです。
参考: https://qiita.com/rei-ta/items/61b3fde6a069b77d335d


Dockerの準備

まずは、Dockerの準備をしましょう。
Dockerのインストールは、WSLのホストであるWindows側に行えば良いようです。
Dockerfileを以下のように作成します。

FROM node:slim
RUN npm install @google/clasp -g

claspを実行する環境が必要なので、イメージとしてnodeを使います。
サイズが小さいほうが何かと便利なのでnode:slimを使っていますが、nodeが動けばなんでもよいかと思います。
また、claspを使えるようにインストールしておきます。

続いて、docker-compose.ymlを作成します。

version: "3"
services:
  clasp:
    build: .
    tty: true
    stdin_open: true
    volumes:
      - "/home/:/usr/src"
    working_dir: /usr/src/${user}

clasp loginしたのち、認証情報がhome直下にできるため/home/${user}をマウントしています。
これで準備は完了。

offlineと怒られる問題を回避する

Dockerを立ち上げていきます。
docker-compose run --rm -u ${id -u $usr} clasp /bin/bash
シェルが立ち上がったら以下のコマンドでログインします。
clasp login --no-localhost
これにて準備は完了です。
あとは、コードを書いてWebapckでビルドしたものをclasp pushしましょう。

node@ded2ca180394:$ clasp push
└─ /usr/src/path/to/project/appsscript.json
└─ /usr/src/path/to/project/bundle.js
Pushed 2 files.

問題なくプッシュできていますね。
これにて回避完了です。

まとめ

手元の環境では、これにてofflineと怒られる問題を回避できました。
ちょっと手間ですが、ひとまずは回避できました。
同じような問題が起こっている場合は試して見てください。

今回は、ここまで。
おしまい