From 61e26696aa901033b28a604f0bcb4a856a3df3a3 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 14 Jul 2022 20:29:45 +0900 Subject: log error while client boot --- packages/backend/src/server/web/boot.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'packages/backend/src') diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index 0a5cc0e0dc..f3116eb653 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -14,9 +14,11 @@ // ブロックの中に入れないと、定義した変数がブラウザのグローバルスコープに登録されてしまい邪魔なので (async () => { window.onerror = (e) => { + console.error(e); renderError('SOMETHING_HAPPENED', e); }; window.onunhandledrejection = (e) => { + console.error(e); renderError('SOMETHING_HAPPENED_IN_PROMISE', e); }; -- cgit v1.2.3-freya From cb00786f1e7ffcadf2b9da87bfffa8e875a1a28b Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 14 Jul 2022 20:41:17 +0900 Subject: improve error handling of client boot --- packages/backend/src/server/web/boot.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'packages/backend/src') diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index f3116eb653..fa3ebbc2a2 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -59,6 +59,7 @@ import(`/assets/${CLIENT_ENTRY}`) .catch(async e => { await checkUpdate(); + console.error(e); renderError('APP_FETCH_FAILED', e); }) //#endregion @@ -271,17 +272,22 @@ // eslint-disable-next-line no-inner-declarations async function checkUpdate() { - // TODO: サーバーが落ちている場合などのエラーハンドリング - const res = await fetch('/api/meta', { - method: 'POST', - cache: 'no-cache' - }); + try { + const res = await fetch('/api/meta', { + method: 'POST', + cache: 'no-cache' + }); - const meta = await res.json(); + const meta = await res.json(); - if (meta.version != v) { - localStorage.setItem('v', meta.version); - refresh(); + if (meta.version != v) { + localStorage.setItem('v', meta.version); + refresh(); + } + } catch (e) { + console.error(e); + renderError('UPDATE_CHECK_FAILED', e); + throw e; } } -- cgit v1.2.3-freya From d78faf11348b284b1e1911a90d9a8f15e067ed64 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 14 Jul 2022 21:02:45 +0900 Subject: chore: use tab --- packages/backend/src/server/web/boot.js | 38 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'packages/backend/src') diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index fa3ebbc2a2..ca5f0639f8 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -117,33 +117,33 @@ if (!errorsElement) { document.documentElement.innerHTML = ` - - - + + +

An error has occurred!

-

Don't worry, it's (probably) not your fault.

+

Don't worry, it's (probably) not your fault.

If the problem persists after refreshing, please contact your instance's administrator.
You may also try the following options:

- - - + + +
- - - + + +
- - - + + +
`; -- cgit v1.2.3-freya From 10f4815d34817c4cb8f8857ef017b426c2457ef1 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 14 Jul 2022 21:52:58 +0900 Subject: tweak boot.js --- packages/backend/src/server/web/boot.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'packages/backend/src') diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index ca5f0639f8..7357081425 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -49,7 +49,7 @@ localStorage.setItem('localeVersion', v); } else { await checkUpdate(); - renderError('LOCALE_FETCH_FAILED'); + renderError('LOCALE_FETCH'); return; } } @@ -60,7 +60,7 @@ .catch(async e => { await checkUpdate(); console.error(e); - renderError('APP_FETCH_FAILED', e); + renderError('APP_IMPORT', e); }) //#endregion @@ -115,7 +115,7 @@ let errorsElement = document.getElementById('errors'); if (!errorsElement) { - document.documentElement.innerHTML = ` + document.body.innerHTML = ` @@ -286,7 +286,7 @@ } } catch (e) { console.error(e); - renderError('UPDATE_CHECK_FAILED', e); + renderError('UPDATE_CHECK', e); throw e; } } -- cgit v1.2.3-freya From f2e91f4d629cd40c8f956cca2d30058048192dfd Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 14 Jul 2022 22:04:16 +0900 Subject: tweak boot.js --- packages/backend/src/server/web/boot.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'packages/backend/src') diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index 7357081425..b9f00bb21d 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -56,12 +56,14 @@ //#endregion //#region Script - import(`/assets/${CLIENT_ENTRY}`) - .catch(async e => { - await checkUpdate(); - console.error(e); - renderError('APP_IMPORT', e); - }) + window.addEventListener('DOMContentLoaded', () => { + import(`/assets/${CLIENT_ENTRY}`) + .catch(async e => { + await checkUpdate(); + console.error(e); + renderError('APP_IMPORT', e); + }); + }); //#endregion //#region Theme -- cgit v1.2.3-freya From 44f560b453fe1161cc6e1dcad6e48fd0ac812cd4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 14 Jul 2022 22:25:57 +0900 Subject: tweak boot.js --- packages/backend/src/server/web/boot.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'packages/backend/src') diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index b9f00bb21d..9570115423 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -56,14 +56,23 @@ //#endregion //#region Script - window.addEventListener('DOMContentLoaded', () => { + function importAppScript() { import(`/assets/${CLIENT_ENTRY}`) .catch(async e => { await checkUpdate(); console.error(e); renderError('APP_IMPORT', e); }); - }); + } + + // タイミングによっては、この時点でDOMの構築が済んでいる場合とそうでない場合とがある + if (document.readyState !== 'loading') { + importAppScript(); + } else { + window.addEventListener('DOMContentLoaded', () => { + importAppScript(); + }); + } //#endregion //#region Theme -- cgit v1.2.3-freya