AIに適切なコンテキストを与える
ここがあなたの効きどころの大半です。バグを報告するときは、次のものを含めてください。
- エラーメッセージを一字一句そのまま。 正確にコピーすること。言い換えてはいけません。エラーを言い換えるのは、電話で写真を説明するようなものです。肝心だった唯一のディテールを取りこぼします。
- スタックトレース、特に先頭の数行。
- 関連するコード — エラーを投げた関数と、それが呼び出すものすべて。
- 期待していたことと、実際に起こったこと。
強力なデバッグプロンプトの実例は、こんな感じです。
I'm getting an error when I submit the signup form. Here's the full output:
TypeError: Cannot read properties of undefined (reading 'email')
at validateUser (src/auth/validate.js:14:23)
at handleSignup (src/routes/signup.js:31:10)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
Steps to reproduce: fill in the form, click "Sign up".
Expected: a "Welcome" message.
Actual: the page goes blank and the error above appears in the console.
Here is validate.js (lines around 14):
[paste the function]
And here is the handleSignup function that calls it:
[paste the function]
What could be causing this, and how do I confirm it before changing anything?
最後の一行に注目してください。あなたは即座の編集ではなく、仮説と確認のステップ を求めています。これがAIを誠実に保ちます。
貼り付けるトレースを 読む 方法を知っておくと役立ちます。スタックトレースは新しい順に並んだ呼び出し履歴です。先頭の行はプログラムが実際に爆発した場所で、その下の各行はその上の関数を呼び出した関数です。だから例では、validateUser は email がundefinedな何かから読み取られた場所で、handleSignup は validateUser を呼び出した側です。あなたのコードより下のフレーム — processTicksAndRejections のような — は言語ランタイムのもので、たいてい無視してかまいません。あなたの ファイルを指す最初の行に当たるまで上から下へ読みます。そこがほぼ常に見始めるべき場所です。