-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(server): Misskey Webでユーザーフレンドリーなエラーページを出す #10590
feat(server): Misskey Webでユーザーフレンドリーなエラーページを出す #10590
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #10590 +/- ##
===========================================
- Coverage 74.00% 73.99% -0.01%
===========================================
Files 731 732 +1
Lines 68247 68287 +40
Branches 5671 5674 +3
===========================================
+ Hits 50503 50527 +24
- Misses 17744 17760 +16
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
#10064 があるので、一部プロパティはナーフできるようにしたほうが良いかも? |
エラーページの実装がfrontendとbackendで両方書かれてしまうようになるのが若干気になる サーバー側でなんかするんじゃなくて、Service Worker 当たりでService Workerに組み込みのhtmlを表示させるあるいはCacheStorageに保存しておいた'/'を表示するみたいな感じにできないかしら CacheStorageの場合は次のような感じで |
そうなると、Service Worker が登録されていない人が見たとき(検索エンジンとかから初めてアクセスした人)にエラーが出た場合に困る気が |
なるほど確かにそう |
5~10秒ぐらいだけCache Controlつけてもいいかも |
|
まだ許容できるコード量なので大丈夫かと (i18nを考えるとかいう話になると厳しそうだけどそれはService Workerとかでいいか) |
fastify.setErrorHandler内でエラーログを発行すると嬉しいかも…? |
loggerないからlogger作るの面倒そう |
(挙動よくわかってないけどさすがにログは出るか? |
paramsとqueryもログするようにした |
errIdを用いてログで追跡可能ならエラースタックをわざわざクライアントに流さなくていいので削除 |
👍👍👍 |
* Refactor sw (misskey-dev#10579) * refactor(sw): remove dead code * refactor(sw): remove dead code * refactor(sw): remove dead code * refactor(sw): remove dead code * refactor(sw): remove dead code * refactor(sw): remove dead code * refactor(sw): 冗長な部分を変更 * refactor(sw): 使われていない煩雑な機能を削除 * refactor(sw): remove dead code * refactor(sw): URL文字列の作成に`URL`を使うように * refactor(sw): 型アサーションの削除とそれに伴い露呈したエラーへの対処 * refactor(sw): `append` -> `set` in `URLSearchParams` * refactor(sw): `any`の削除とそれに伴い露呈したエラーへの対処 * refactor(sw): 型アサーションの削除とそれに伴い露呈したエラーへの対処 対処と言っても`throw`するだけ。いままでもこの状況ではエラーが投げられていたはずなので、この対処により新たな問題が起きることはないはず。 * refactor(sw): i18n loading * refactor(sw): 型推論がうまくできる書き方に変更 `codes`が`(string | undefined)[]`から`string[]`になった * refactor(sw): クエリ文字列の作成に`URLSearchParams`を使うように * refactor(sw): `findClient` * refactor(sw): `openClient`における`any`や`as`の書き換え * refactor(sw): `openPost`における`any`の書き換え * refactor(sw): `let` -> `const` * refactor(sw): `any` -> `unknown` * cleanup(sw): import * cleanup(sw) * cleanup(sw): `?.` * cleanup(sw/.eslintrc.js) * refactor(sw): `@typescript-eslint/explicit-function-return-type` * refactor(sw): `@typescript-eslint/no-unused-vars` * refactor(sw): どうしようもないところに`eslint-disable-next-line`を * refactor(sw): `import/no-default-export` * update operations.ts * throw new Error --------- Co-authored-by: tamaina <tamaina@hotmail.co.jp> * Update CHANGELOG.md (misskey-dev#10591) * feat: queueing bulk follow/unfollow and block/unblock (misskey-dev#10544) * wrap follow/unfollow and block/unblock as job queue * create import job to follow in each iteration * make relationship jobs concurrent * replace to job queue if called repeatedly * use addBulk to import * omit stream when importing * fix job caller * use ThinUser instead of User to reduce redis memory consumption * createImportFollowingToDbJobの呼び出し方を変える, 型補強 * Force ThinUser * オブジェクト操作のみのメソッド名はgenerate...Data * Force ThinUser in generateRelationshipJobData * silent bulk unfollow at admin api endpoint --------- Co-authored-by: tamaina <tamaina@hotmail.co.jp> * perf(backend): ノート作成時のアンテナ追加パフォーマンスを改善 * update CHANGELOG.md * refactor: サウンド関連の設定をpizzaxに移行 (misskey-dev#8105) * enhane: unison-reloadに指定したパスに移動できるように * null * null * feat: ログインするアカウントのIDをクエリ文字列で指定する機能 * null * await? * rename * rename * Update read.ts * merge * get-note-summary * fix * swパッケージに * add missing packages * fix getNoteSummary * add webpack-cli * ✌️ * remove plugins * sw-inject分離したがテストしてない * fix notification.vue * remove a blank line * disconnect intersection observer * disconnect2 * fix notification.vue * remove a blank line * disconnect intersection observer * disconnect2 * fix * ✌️ * clean up config * typesを戻した * backend/src/web/index.ts * notification-badges * add scripts * change create-notification.ts * Update packages/client/src/components/notification.vue Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> * disconnect * oops * Failed to load the script unexpectedly回避 sw.jsとlib.tsを分離してみた * truncate notification * Update packages/client/src/ui/_common_/common.vue Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> * clean up * clean up * refactor * キャッシュ対策 * Truncate push notification message * fix * wip * clean up * migration * migration * comment * move soundConfigStore * ✌️ * clean up * クライアントがあったらストリームに接続しているということなので通知しない判定の位置を修正 * components/drive-file-thumbnail.vue * components/drive-select-dialog.vue * components/drive-window.vue * merge * fix * remove reversi setting * Service Workerのビルドにesbuildを使うようにする * return createEmptyNotification() * fix * fix * i18n.ts * update * ✌️ * remove ts-loader * fix * fix * enhance: Service Workerを常に登録するように * pollEnded * pollEnded * URLをsw.jsに戻す * clean up * clean up * update sounds.vue * update * fix type * ✌️ * ;v; --------- Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> * enhance: カスタム絵文字関連の変更 (misskey-dev#9794) * PackedNoteなどのemojisはプロキシしていないURLを返すように * MFMでx3/x4もしくはscale.x/yが2.5以上に指定されていた場合にはオリジナル品質の絵文字を使用する * update CHANGELOG.md * fix changelog * ?? * wip * fix * merge * Update packages/frontend/src/scripts/media-proxy.ts Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> * merge * calc scale --------- Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> * feat: role timeline Resolve misskey-dev#10581 * feat(server): Misskey Webでユーザーフレンドリーなエラーページを出す (misskey-dev#10590) * (add) user-friendly error page * Update CHANGELOG.md * (add) cache-control header * Add ClientLoggerService * Log params and query * remove error stack on client * fix pug * 文面を調整 * :art] --------- Co-authored-by: tamaina <tamaina@hotmail.co.jp> * test(backend): Add tests for users (misskey-dev#10546) Co-authored-by: tamaina <tamaina@hotmail.co.jp> * fix(backend): カスタム絵文字でリアクションできないことがある問題を修正 * Update CustomEmojiService.ts * fix type * Use unique identifier for each follow request (misskey-dev#10600) Co-authored-by: anemone <anemoneya@icloud.com> * fix type in CustomEmojiService * fix type in CustomEmojiService 2 * fix * Update CHANGELOG.md * fix(server): アンテナとロールTLのuntil/sinceプロパティが動くように (misskey-dev#10605) * fix(server): アンテナとロールTLのuntil/sinceプロパティが動くように * fix * Update CHANGELOG.md * Update about-misskey.vue * 🎨 * fix(backend): チャンネルのピン留めされたノートの順番が正しくない問題を修正 Fix misskey-dev#10541 * New Crowdin updates (misskey-dev#10585) * New translations ja-JP.yml (English) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Chinese Simplified) * New translations ja-JP.yml (Italian) * New translations ja-JP.yml (Italian) * New translations ja-JP.yml (English) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Chinese Traditional) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Chinese Simplified) * 13.11.3 * [ci skip] remove outdated comment * [ci skip] improve readability * 一部の Workflow を削除 --------- Co-authored-by: okayurisotto <aytkzm@gmail.com> Co-authored-by: tamaina <tamaina@hotmail.co.jp> Co-authored-by: futchitwo <74236683+futchitwo@users.noreply.github.com> Co-authored-by: Namekuji <11836635+nmkj-io@users.noreply.github.com> Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: Nanashia <nanashia.128@gmail.com> Co-authored-by: hutchisr <42283663+hutchisr@users.noreply.github.com> Co-authored-by: anemone <anemoneya@icloud.com> Co-authored-by: Ebise Lutica <7106976+EbiseLutica@users.noreply.github.com>
Fix #10588
What
部分的なSSRを行うページ等において、DBが落ちた際などにFastifyから出力されるJSON形式の簡素なエラー表示が出ることを避ける
ついでにその際のエラーログも出力する
Why
JSON形式エラー表示では、非プログラマーが困惑するため
Additional info (optional)
クライアントのinit時にエラーが発生した際の画面と同じものをレンダリングする
エラー画面体験方法
/notes/:id
など、SSRが挟まるページを閲覧するChecklist