VSCode拡張機能の直し方

# はじめに

こんにちは！ばーんです。

今回はVSCodeの拡張機能が機能しなくなった→復旧した
経緯と対応方法をさくっと書きます。

今回のエラーはざっくり言うと

**「VSCode立ち上げたら拡張機能の同期に関するエラーが出て、拡張機能が動いていない。
また、再接続を何度試みても同様のエラーが出る。」**

1. microsoftの認証ができていないというエラーが出る
2. エラーを見るとドキュメントへのファイルパスが出てるので開こうとするけど「そんなファイルない」って言われる
3. ググってみても原因が多岐にあるようで解決策は出てこない
4. その中でもVSCode立ち上げ直しをやってみた
5. 次は、「拡張機能が同期できていません。失敗しました」のエラーが消えない(相変わらず拡張機能は動かない)
6. ネットに出ている対応方法総当たり的に試しても改善されず
7. 諦めて公式のGitHubにissue投げようとしていたところ…

という状態でした。

## 試してみたけどダメだったこと

公式のGitHubから辿ったものがメイン。
残りは症状でググって出てきた記事の内容。

- ショートカットキー設定の同期を切る
なんか分からんけどこれで直ったわ！って書いてたからやってみたけどダメ。そらそう。

- microsoftにサインインする
microsoftはログイン情報早めに切れるので、サインインしたら少し変わりました。
エラーの固有名詞が microsoft→github になりました。違うそうじゃない

- githubの自分のアカウントからサインアウトして、再度サインインする
githubはログインしっぱなしやと思うけどなぁ…と思いつつ。
microsoftでログインしたら挙動変わったのでワンチャン！がっ…ダメ！

- VSCodeを最新のバージョンにアップデートする
元々最新でした〜。知ってた。

### 今回の対応方法(その場しのぎ)

上記の対応を終えて表面的に出ているエラーじゃ解決できないな…と感じました。

そして、ログと開発ツール立ち上げてみた結果「Easy sass」が原因でした。

開発ツール立ち上げるとGoogle Chromeの検証と同じ画面になります。
そこのコンソールに出ていたエラーを1文1文読むと
「Easy sass」に関する記述があったので、削除したところ改善しました。

## 根本的な対応方法(notその場しのぎ)

- ログをみる
- エラーをみる

~~ざっつおーる~~

これで終わると記事書く意味がないのでもう少し掘り下げていきます。

- ログをみる
  - 拡張機能はそもそも開始しようとしている？
  - 全ての拡張機能がダメ？
- エラーをみる
  - そもそもエラーが何を言ってるのか理解する
  - エラーに対応方法書いてない？
  - エラー文からググってみる
- 動く前にやったことから再現する
  - 具体的な原因を突き止める
  - 総当たり的な対応

### ログをみる

ログの見方↓
https://note.kiriukun.com/entry/20190817-eslint-not-working-in-vscode

```
[2020-09-16 15:17:08.985] [userDataSync] [error] ConnectionRefused (UserDataSyncError) syncResource:unknown operationId:unknown: Connection refused for the request 'https://vscode-sync.trafficmanager.net/v1/manifest'.
    at D.request (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/code/electron-browser/sharedProcess/sharedProcessMain.js:558:448)
    at async D.manifest (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/code/electron-browser/sharedProcess/sharedProcessMain.js:556:741)
    at async C.createSyncTask (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/code/electron-browser/sharedProcess/sharedProcessMain.js:537:447)
    at async E.doSync (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/code/electron-browser/sharedProcess/sharedProcessMain.js:531:887)
```

> (和訳)リクエスト 'https://vscode-sync.trafficmanager.net/v1/manifest' に対して接続が拒否されました。

んーよく分からん。URLに飛んでみても認証ヘッダーがありませんとしか書かれてない…
そして、したのファイルパスはドキュメントへのパスとアラートが出てるのですが、飛ぼうとしてもファイルがないので飛べず…つら…

```
[2020-09-16 00:18:30.354] [exthost] [info] extension host started
[2020-09-16 00:18:30.402] [exthost] [info] ExtensionService#_doActivateExtension vscode.microsoft-authentication {"startup":false,"extensionId":{"value":"vscode.microsoft-authentication","_lower":"vscode.microsoft-authentication"},"activationEvent":"onAuthenticationRequest:microsoft"}
[2020-09-16 00:18:30.402] [exthost] [info] ExtensionService#loadCommonJSModule file:///Applications/Visual Studio Code.app/Contents/Resources/app/extensions/microsoft-authentication/dist/extension.js
[2020-09-16 00:18:30.412] [exthost] [info] ExtensionService#_doActivateExtension vscode.github-authentication {"startup":false,"extensionId":{"value":"vscode.github-authentication","_lower":"vscode.github-authentication"},"activationEvent":"onAuthenticationRequest:github"}(以下略)
```

> (和訳)エクステンションホスト開始

なるほど。開始のコマンドは走ってるみたいね。それだけ分かる。


### エラーをみる

```
(node:45640) [DEP0005] DeprecationWarning: 
Buffer() is deprecated due to security and usability issues. 
Please use the Buffer.alloc(), Buffer.allocUnsafe(),
 or Buffer.from() methods instead.
```

> (和訳)DeprecationWarning. 
Buffer() はセキュリティと使い勝手の問題から非推奨です。
Buffer.alloc()、Buffer.allocUnsafe()をご利用ください。
 メソッドや Buffer.from() メソッドを使用します。

これエラーなの…？errの表記もないし内容もwarnっぽいな。一旦無視で。

```
Extension host terminated unexpectedly. Code:  7  Signal:  null
```

> (和訳)拡張ホストが予期せず終了しました。コード。 7 信号：ヌル

はいはい。知ってる。


```
ERR Extension host terminated unexpectedly. The following extensions were running:
vscode.microsoft-authentication, vscode.github-authentication,
(中略)xyz.local-history, Zignd.html-css-class-completion, vscode.npm
```

> (和訳)ERR 拡張ホストが予期せず終了しました。以下の拡張機能が実行されていました。

実行はされてるけどエラーが出てる。なので拡張機能止まってる…と。

```
ERR No authentication provider 'github' is currently registered.
: Error: No authentication provider 'github' is currently registered.
```

> (和訳)現在、認証プロバイダ「github」は登録されていません。

はいはい。なぜ2回も言うんや。これは本当に謎。
調べても出てこないので恐らく原因は他。

```
Error: Header must provide a Content-Length property.
at StreamMessageReader.onData 
```

> (和訳)ヘッダーは Content-Length プロパティを提供する必要があります。
StreamMessageReader.onDataで 

これもよく分からんな…

んファイパスにeasysassが入ってるな。どれどれ…


### 動く前にやったことから再現する

今回はこれを実行しなくて済みました。
基本的に悪手なのでなるべくやらないに越したことはないですね。

## さいごに

完全に余談ですが深夜に少しだけコード書こ…
と思ってVSCode立ち上げたらこうなったので泣きそうでしたw

大体最初のエラー見れば直せること多いのに、
掘っても掘っても直接的な原因が出てこないので…

以前であれば半日かけてパワープレイで直してたようなモノを1h程度で直せたので、
とても自己肯定感が高まりました＾＾

恐らくですが、VSCodeは拡張機能が数が多すぎるので

- アップデートしてない
- 設定ファイル書き換えた
- ディレクトリの配置変更した

など様々な要因でエラーが発生するので、特定しにくいのかなと感じます。
[VCCodeのissue](https://github.com/microsoft/vscode)見ていると同じ原因で動いていないということが殆どなかったので。

なのでVSCodeの拡張機能壊しちゃった！という方は、エラーやログをみて直すのがおすすめです。
([その場しのぎではないやり方で](https://qiita.com/baan_nasebanaru/items/7dfb0792e5fb3b19cc21#%E6%A0%B9%E6%9C%AC%E7%9A%84%E3%81%AA%E5%AF%BE%E5%BF%9C%E6%96%B9%E6%B3%95not%E3%81%9D%E3%81%AE%E5%A0%B4%E3%81%97%E3%81%AE%E3%81%8E))

最後まで見ていただきありがとうございましたm_ _m