環境
- Visual Studio Code: Version 1.42.1
- OS: macOS Catalina Version 10.15.3
- Settings Sync: Version 3.4.3
記事内で説明しているショートカットは、Mac以外の方は自分のOSのものに読み替えてください。
画面のスクショと説明が、英語と日本語のメニュー名ごちゃまぜかもしれませんが、あしからず。
問題
会社のPCのバッテリーがおかしくなり、新しいPCになったのでVSCodeのセットアップをしていたら、Settings Syncの設定ダウンロードで毎回同じエラーが出て同期ができませんでした。
もちろん、Gist IDとAccess Tokenは正しい状態です。
// 日本語
Sync: コンソールのログインエラー ([ヘルプ] > [開発者ツールの切り替え])
// 英語
Sync: Error Logged In Console (Help menu > Toggle Developer Tools).
この記事では、この原因(のおそらく一部)と解決方法について記載します。
結論
問題の原因
GitHub Gistの extensions.json
に記載されている拡張に、VSCodeのMARKETPLACEから無くなったもの(非公開or削除)が含まれており、それをインストールしようとして失敗しまうため。
解決方法
extensions.json
から、以下のいずれかの方法で該当の拡張のコードを消す。
- Settings Syncで同期している他のPCで該当の拡張をアンイストールして、設定をアップロードする
- GitHub Gistの
extensions.json
を直接編集する
説明
さきほどの画像だと、vscode-code-outline
がMARKETPLACEから無くなっているのに、それをインストールしようとして、拡張が見つからずにエラーになっています。
毎回同じ場所でエラーになっていれば、その拡張が原因の可能性が高いです。
私の場合、MARKETPLACEから無くなった sublime-babel-vscode
と vscode-code-outline
が前のPCでインストールされたままで、それらを新しいPCでインストールしようとしていました。
ということで、解決するためにはこれらをインストールしないようにすればよいです。
解決方法はおそらく↑に書いたように
- Settings Syncで同期している他のPCで該当の拡張をアンイストールして、設定をアップロードする
- GitHub Gistの
extensions.json
を直接編集する
のいずれかです。
簡単なのは前者で、他のPCで該当の拡張をアンインストールするだけでOKでしょう(これで解決できるかは試していません)。
ただ、私は会社の前のPCが使えない状態かつ、家に帰ってプライベートのPCが操作できるのを待つのはいやだったので、後者のGitHub Gistを直接編集して消す方法を取りました。
GitHub Gistを編集
GitHub Gistの編集の手順を説明します。
GitHub Gistを開く
※以下の説明ではVSCodeから開いていますが、もちろん、普通にブラウザ操作で開いてもOK
shift+cmd+p
でコマンドパレットを開き、sync
と打って表示される Advanced Options
を選択。
Sync: Open Settings
を選択。
Gist ID
右下の VIEW
を選択して、Settings Syncで使っているGitHub Gistを開く。
GitHub Gistを編集
Edit
を選択。
extensions.json
にフォーカスを当て、cmd+F
で該当の拡張を検索。
オブジェクト一式を削除。
該当の拡張のオブジェクトをすべて削除してください。
さらに cloudSettings
も編集します。
extensions.json
しか編集しないと、新しいPCでなんらかの設定を更新してGistにアップロードする前に、古いPCで設定を更新してアップロードしてしまうと、さきほど消した extensions.json
の拡張のコードが復活してしまいます。
これは、設定の最新アップロード日時が、古いPCで設定が同期された日時以下のため、古いPCの設定が最新と認識されてしまい、消したコードが残ったままになるからです。
そのため、タイムスタンプを更新しておきます。
cloudSettings
の lastUpload
を現在日時にでもしておきましょう。
画面最下部の Update secret gist
を選択。
以上です。
Revisions
で差分を見ると、コードが消えていることが確認できます。
これでエラーが起きていたPCで設定をダウンロードすると、この記事のエラーは起きないはずです!
他のエラーが出たら頑張って解決してください笑
余談
私は日本語のエラーと英語のエラーで検索しても、解決方法が見つけられませんでした。
Settings Syncのソースコードの common.error.message
でこのエラーの文章が定義されており、ERROR_MESSAGE
という変数に入れているのはわかりましたが、具体的にどういうエラーで起きるかはわからず。。。
結局、エラーが毎回同じ箇所で発生していることから推測して、この記事の内容にたどり着きました。