top of page
The note to squeeze Wix
Stores/Orders が存在しなかった
WDE0025 は権限や綴りの問題に見える。実際には注文コレクションの ID が世代で変わっていた。作成日のフィールド名まで変わる。
ccke6h9d admin
1 時間前読了時間: 3分
exist で重複判定したら、未作成のコレクションまで「既に登録されています」になった
Wix の英語エラーには does not exist が含まれる。重複メールの判定を /already|exist/ と広く取ると、まったく別の障害が利用者に「既に登録されています」として見える。
ccke6h9d admin
1 時間前読了時間: 2分
1つの catch にまとめると、会員情報保存の失敗が全て「会員登録の失敗」に化ける
会員を作る段階と、そのあとプロフィールを保存する段階では、失敗の意味がまったく違う。まとめて catch すると、成功した段階まで失敗として表示され、利用者は同じ操作を繰り返す。
ccke6h9d admin
1 時間前読了時間: 3分
バックエンドで投げた例外の理由は、画面に届かない
Velo は throw した内容を汎用のメッセージへ置き換える。原因を利用者にも開発者にも届けたいなら、投げるのをやめて返すしかない。
ccke6h9d admin
1 時間前読了時間: 3分
全件取得のつもりが、最初のページだけ落ちていた
hasNext() と next() で全件をつなぐループで、初回の結果だけを配列へ入れ忘れる。1ページで収まるうちは、取得件数が0のまま「データが見つかりません」と表示される。
ccke6h9d admin
1 時間前読了時間: 3分
ページングの終了条件が1つしか無いと、永久に回って 504 になる
「返った件数がページサイズ未満なら終わり」だけを終了条件にしていた3か所を直した。上限、並列化、同じデータを二度読まないこと。全件走査に頼る集計で効いた3点をまとめる。
ccke6h9d admin
1 時間前読了時間: 4分
Wix の時間切れより手前で、自分から諦める
504 になると戻り値ごと消えるので、どの読み取りが遅かったのかが分からない。プラットフォームの上限より手前に自前の上限を置き、段階ごとの所要時間を普通の戻り値として返すようにした。
ccke6h9d admin
1 時間前読了時間: 4分
504 を「遅い」と読んで、丸一ラウンド無駄にした
webMethod が 504 を返した。読み取りが重いのだろうと考えて並列化と上限を入れた。あとで分かったのは、その時点でバックエンドはコレクションを1回も読んでいなかったということだった。
ccke6h9d admin
1 時間前読了時間: 3分
例外より見つけにくい、モジュール評価時の NaN
import した定数を評価時に計算すると、依存が古いときに undefined * 60 * 1000 が NaN になる。例外は出ない。締切の判定だけが静かに反転する。
ccke6h9d admin
1 時間前読了時間: 3分
Velo では import * as ns が静かに空になる
名前空間インポートはビルドエラーを出さずに失敗する。ns.関数名 is not a function だけが残り、しかもその一行が画面に出るまでに、別の修正がもう1つ必要だった。
ccke6h9d admin
1 時間前読了時間: 3分
bottom of page