はじめに
このプロジェクトでは、vue-router-2.7.0 ライブラリにおける query パラメータの null 値の処理に関連するバグを修正する方法を学びます。
👀 プレビュー

🎯 タスク
このプロジェクトでは、以下のことを学びます。
vue-router-2.7.0/src/util/route.jsファイル内のisObjectEqual関数をどのように見つけ、理解するか。isObjectEqual関数を修正して、null値を正しく処理する方法。- 修正済みの関数を持つ
vue-router-2.7.0プロジェクトを再構築してリリースする方法。 - 以前のエラーメッセージが表示されないことをブラウザコンソールで確認することで、修正をテストする方法。
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- サードパーティのライブラリにあるバグを特定して修正すること。
vue-router-2.7.0ライブラリを使用し、その内部関数を理解すること。- コード変更を行った後にプロジェクトを再構築してリリースすること。
- ブラウザコンソールのエラーメッセージを確認することで、修正をテストすること。
isObjectEqual 関数を修正する
始めに、左側のファイルのディレクトリ構造を以下のように見てみましょう。
├── vue-router-2.7.0
├── vue.min.js
└── index.html
WebIDE の右下隅にある「Go Live」ボタンをクリックして、プロジェクトを実行します。
次に、VM の上部の「Web 8080」を開き、手動で更新し、「test」をクリックしてブラウザコンソールの「Console」オプションを開くと、2 つのエラーメッセージが表示されます。それらは「TypeError: Cannot convert undefined or null to object」と「Uncaught TypeError: Cannot convert undefined or null to object」です。

このステップでは、vue-router-2.7.0/src/util/route.js ファイル内の isObjectEqual 関数を修正して、null 値を正しく処理する方法を学びます。
vue-router-2.7.0/src/util/route.jsファイルを開きます。isObjectEqual関数を見つけます。
function isObjectEqual(a = {}, b = {}): boolean {
const aKeys = Object.keys(a);
const bKeys = Object.keys(b);
if (aKeys.length!== bKeys.length) {
return false;
}
return aKeys.every((key) => {
const aVal = a[key];
const bVal = b[key];
// ネストした等価性をチェック
if (typeof aVal === "object" && typeof bVal === "object") {
return isObjectEqual(aVal, bVal);
}
return String(aVal) === String(bVal);
});
}
- 関数を更新して、
null値を正しく処理するようにします。
function isObjectEqual(a = {}, b = {}): boolean {
if (!a ||!b) return a === b;
const aKeys = Object.keys(a);
const bKeys = Object.keys(b);
if (aKeys.length!== bKeys.length) {
return false;
}
return aKeys.every((key) => {
const aVal = a[key];
const bVal = b[key];
// ネストした等価性をチェック
if (typeof aVal === "object" && typeof bVal === "object") {
return isObjectEqual(aVal, bVal);
}
return String(aVal) === String(bVal);
});
}
変更点は以下の通りです。
aまたはbがnullまたはundefinedであるかどうかをチェックする条件を追加しました。どちらかがnullまたはundefinedの場合、関数はa === bを返します。- これにより、関数は
queryパラメータ内のnull値を正しく処理するようになります。
プロジェクトを再構築してテストする
このステップでは、isObjectEqual 関数を修正した後、vue-router-2.7.0 プロジェクトを再構築してテストします。
- ターミナルで
vue-router-2.7.0ディレクトリに移動します。 - 依存関係をインストールするために
npm installコマンドを実行します。このプロセスには時間がかかる場合があるので、しばらくお待ちください。(長時間止まった場合は、Ctrl+Cを押してプロセスを終了し、その後再度このコマンドを実行してください。) - インストールが完了したら、
npm run buildコマンドを実行して、プロジェクトを再構築してリリースします。これにより、修正されたisObjectEqual関数を持つ更新されたvue-router-2.7.0ライブラリが生成されます。 - ブラウザのページに戻り、ページを更新します。
- 「test」をクリックして、
Consoleタブのコンソールを開いて確認すると、上記のエラーメッセージは表示されなくなります。
エラーメッセージが表示されなくなった場合、修正は成功です。これでプロジェクトが完了です!

まとめ
おめでとうございます!このプロジェクトを完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を行って練習してください。



