Hai un errore JavaScript, la console sputa un TypeError e tu inizi a mettere console.log() ovunque. A volte risolvi, spesso perdi tempo.
ChatGPT può aiutarti davvero nel debug, ma solo se lo costringi a ragionare come un dev: ipotesi → test → fix.
In questa guida trovi 15 prompt pronti (copiaincolla) per i casi più comuni: undefined, async/await, fetch, DOM, stack trace, bug intermittenti. Con esempi reali, una tabella “errore → prompt” e una checklist finale.
Perché i prompt “generici” falliscono nel debug
Se scrivi a ChatGPT: “Mi dà errore, aiutami”, lui farà quello che può: indovinare.
Il debug invece richiede dati verificabili. E il modo più veloce per ottenerli è:
- Errore completo (anche stack trace)
- Contesto minimo (dove avviene, in quale funzione)
- Esempio riproducibile (anche mini)
Cosa serve davvero: errore + contesto + riproduzione minima
Il tuo obiettivo non è ottenere “una soluzione”, ma ottenere una diagnosi che puoi testare.
Un buon prompt deve produrre:
- 2–3 ipotesi ordinate per probabilità
- 2–3 test rapidi per confermare/smentire
- una fix con codice corretto
Regola d’oro: chiedi diagnosi + test + fix (in quest’ordine)
Se chiedi subito “dammi la soluzione”, rischi di ricevere un fix che:
- non risolve la causa
- nasconde l’errore (antipattern)
- funziona solo nel caso specifico
Checklist: cosa incollare in ChatGPT (senza rischi)
Incolla sempre:
- Messaggio d’errore completo
- Stack trace (se presente)
- Snippet minimo (20–60 righe, solo ciò che serve)
- Expected vs Actual (cosa ti aspettavi / cosa succede)
- Ambiente: browser o Node, versione, framework
- Input che scatena il bug
⚠️ Non incollare mai: token, password, file .env, chiavi API, dati personali.
Tip: se il tuo snippet è grande, chiedi prima a ChatGPT di aiutarti a creare un MRE (Minimum Reproducible Example). È uno dei trucchi più efficaci.
15 prompt ChatGPT pronti per debuggare JavaScript (con esempi reali)
Usa questi prompt come “strumenti”. Copiali e incollali, poi aggiungi Errore + Snippet + Expected/Actual.
Chiusura standard da aggiungere sempre a fine prompt:
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande per sbloccare la diagnosi.

1) Prompt “Diagnosi + prossimo passo”
Quando usarlo: sempre, come prima mossa.
Prompt
Agisci come un senior JavaScript developer. Analizza questo errore e dammi:
- 3 ipotesi ordinate per probabilità
- 3 controlli rapidi per confermare/smentire
- la fix più probabile con codice corretto.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
Esempio erroreTypeError: Cannot read properties of undefined (reading 'map')
2) Prompt “Riduci a esempio minimo riproducibile (MRE)”
Quando usarlo: quando il codice è grande o confuso.
Prompt
Riduci questo codice a un esempio minimo riproducibile che genera lo stesso errore. Poi proponi la correzione più pulita.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
3) Prompt “Expected vs Actual”
Quando usarlo: quando il bug è logico, non solo un crash.
Prompt
Ti dico cosa mi aspettavo e cosa succede. Dimmi dove sta il mismatch e come correggerlo.
Expected: …
Actual: …
Errore/log: …
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
4) Prompt “Undefined / null: individua la sorgente”
Quando usarlo: undefined, null, proprietà mancanti.
Prompt
Analizza dove e perché questa variabile diventa undefined/null. Proponi una fix che non nasconda l’errore ma lo prevenga (guard clauses, default, validazione input).
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
5) Prompt “Async/await: flusso temporale”
Quando usarlo: valori “pending”, ordine errato, race conditions.
Prompt
Ho questo bug async. Spiegami il flusso temporale passo-passo e dimmi dove sto usando una Promise come se fosse un valore. Poi riscrivi il blocco in modo corretto.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
Esempio tipicoconsole.log(data) stampa Promise { <pending> }
6) Prompt “Fetch API: status, parsing, error handling”
Quando usarlo: chiamate HTTP che falliscono “in silenzio”.
Prompt
Analizza questa chiamata fetch: dimmi
- se gestisco bene status code e JSON parsing
- come loggare in modo utile
- versione corretta del codice (try/catch + check response.ok).
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
7) Prompt “Scope / hoisting / TDZ”
Quando usarlo: ReferenceError, variabili non inizializzate.
Prompt
Questo errore sembra legato a scope/hoisting/TDZ. Spiegami cosa succede e riscrivi il codice per renderlo esplicito e sicuro.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
EsempioReferenceError: Cannot access 'x' before initialization
8) Prompt “DOM: element null e timing eventi”
Quando usarlo: querySelector null, eventi non agganciati.
Prompt
Debugga questo handler DOM: dimmi se l’elemento esiste quando lo seleziono, se sto attaccando l’evento nel momento giusto, e proponi 2 fix alternative (DOMContentLoaded / delega eventi).
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
EsempioCannot read properties of null (reading 'addEventListener')
9) Prompt “JSON/data shape: valida prima di usare”
Quando usarlo: API imprevedibili, proprietà mancanti.
Prompt
Verifica la shape dei dati. Dimmi che struttura ti aspetti e come posso validarli prima di usarli. Proponimi una funzione di guard robusta e dove inserirla.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
10) Prompt “Interpreta lo stack trace”
Quando usarlo: errori “lontani” dalla causa.
Prompt
Leggi lo stack trace e indicami: punto d’origine, funzione chiamante e perché l’errore emerge lì. Poi dammi una strategia di debug con breakpoint/log mirati.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
11) Prompt “Bug intermittente: ipotesi + test rapidi”
Quando usarlo: “succede ogni tanto”.
Prompt
Il bug è intermittente. Dammi 5 cause tipiche in JS (race, stato condiviso, timing, mutation, cache) e per ciascuna un test rapido per isolarla.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
12) Prompt “Mutation vs immutability”
Quando usarlo: oggetti/array modificati “a sorpresa”.
Prompt
Controlla se sto mutando oggetti/array causando effetti collaterali. Evidenzia le righe critiche e riscrivi in modo immutabile.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
13) Prompt “Fix + refactor minimo anti-ricaduta”
Quando usarlo: vuoi risolvere e prevenire.
Prompt
Risolvi il bug e proponi un refactor minimo che renda difficile ricadere nello stesso errore (nomi, early return, funzioni pure, validazione input).
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
14) Prompt “Scrivi un test minimo”
Quando usarlo: vuoi un “guardrail” per il futuro.
Prompt
Scrivi un test minimo (pseudo o Jest) che riproduce il bug e passa dopo la fix. Voglio un test che fallisce prima e passa dopo.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
15) Prompt “Checklist finale di verifica”
Quando usarlo: sempre prima di chiudere un bug.
Prompt
Prima di chiudere: dammi una checklist di verifica (5 punti) per essere sicuro che la fix è corretta e non introduce regressioni.
Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.
Tabella: errore JavaScript → prompt da usare

| Errore / sintomo | Prompt consigliati |
|---|---|
Cannot read properties of undefined | #1, #4, #9 |
Promise { <pending> } / risultati async strani | #5, #11 |
addEventListener su null | #8, #10 |
fetch non gestito / JSON parse | #6, #9 |
ReferenceError / TDZ | #7 |
| Bug che compare “a caso” | #11, #12 |
| Fix ok ma codice fragile | #13, #15 |
Errori comuni quando usi ChatGPT per fare debug (e come evitarli)
1) Incollare troppo codice
ChatGPT rende meglio con snippet ridotti.
Soluzione: usa il prompt #2 per creare un MRE.
2) Non dire “Expected vs Actual”
Senza questo, ChatGPT non sa qual è il comportamento corretto.
Soluzione: prompt #3.
3) Chiedere solo “la soluzione”
Così ottieni fix non verificabili.
Soluzione: prompt #1 con ipotesi + test.
4) Accettare fix che “silenziano” l’errore
Esempi: try/catch ovunque, optional chaining usato come cerotto, return null a caso.
Soluzione: chiedi sempre guard clauses + validazione (prompt #4/#9).
5) Non verificare con un test o una checklist
Senza verifica, il bug torna.
Soluzione: prompt #14 + #15.
Strumenti pratici per verificare davvero la soluzione
Anche con ChatGPT, il debug lo chiudi tu con strumenti reali:
- Breakpoints (DevTools): fermati nel punto in cui il valore diventa sbagliato
- Log mirati: 2–3 log ben scelti > 50 log inutili
- Riproduzione isolata: copia lo snippet in una pagina semplice o in un file Node
- Test minimo (se il bug è in logica pura): ti evita regressioni
Mini-regola: se non riesci a riprodurre, non puoi essere sicuro di aver risolto.
FAQ
ChatGPT può sostituire il debugger?
No. Può accelerare la diagnosi e suggerire test/fix, ma la verifica va fatta con DevTools, riproduzione e (quando utile) test.
Posso incollare file interi?
Meglio di no. Parti sempre da uno snippet minimo. Se serve, fai prima il prompt #2 per ridurre.
ChatGPT a volte “inventa”: come lo evito?
Usa sempre la chiusura: “Non inventare. Se manca un dato fammi solo 3 domande.”
E chiedi test rapidi prima della fix (prompt #1).
Funziona anche con framework (React, Vue, Node)?
Sì, ma devi indicare l’ambiente e la versione. Molti bug cambiano a seconda del runtime e del bundler.
Conclusione
Se usi ChatGPT con prompt generici, ottieni risposte generiche.
Se lo usi con un metodo (ipotesi → test → fix), diventa un alleato potente per il debug JavaScript.
✅ Salva questo articolo e la prossima volta che vedi un TypeError, parti dal prompt #1.






