WSL から sfdx の認証を通す
前回対応した内容でいざ開発しようと思ったら、認証で行き詰ったのでその対処方法を記録する。
まず、そのまま force:auth:web:login
すると、失敗してしまう。
これは VSCode から行っても(Remote WSL している限りは)一緒で、これがなぜかというと、URL 認証を開始しておきながら、ブラウザを起動することができないから。
しかし、WSL には画面もクソもないわけで、まさかコンソールブラウザで認証するわけにもいかない…。
そこで、WSL の機能に頼り、Windows のアプリを WSL bash から呼び出せるように設定する。
apt install xdg-utils
でデスクトップアプリ由来のソフトを呼び出す機能をインストールする。WSL には GUI が無いのだから、当然入ってない。
Debian -- sid の xdg-utils パッケージに関する詳細- 適当なパスに、シェルを記述する。まぁめんどくさいので今回はユーザホーム直下に書いた。シェル名は
start_chrome.sh
で、中身はこんな感じ。mnt/
以降は Windows のパスなので、ブラウザのパスを突っ込もう
sh "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" $1:$2
chmod +x start_chrome.sh
で実行権限を与えとこうか。pwd
で今のパスを拾っとく。今回打ったら/home/azalea
だった。ここにシェルを書いたので、シェルのパスは/home/azalea/start_chrome.sh
だ。.bashrc
を開いて、最後にexport BROWSER="/home/azalea/start_chrome.sh"
と突っ込んでおく。source .bashrc
を叩いて、設定を読み込む。
検証してみるにはコマンドラインに xdg-open https://www.salesforce.com
と打ち込んでみよう。
正しく設定されていれば、Windows の Chrome が立ち上がるはずだ。
これが出来たら sfdx auth:web:login
でブラウザを起動して認証しよう。