Workflow astratto di debugging JavaScript con ChatGPT in 5 fasi

15 prompt ChatGPT pronti per debuggare errori JavaScript (con esempi reali e soluzioni)

Una guida pratica con 15 prompt ChatGPT copiaincolla per risolvere gli errori JavaScript più comuni. Include esempi reali, tabella “errore → prompt”, errori da evitare e checklist di verifica.

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 è:

  1. Errore completo (anche stack trace)
  2. Contesto minimo (dove avviene, in quale funzione)
  3. 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.

diagramma astratto del processo di debug in quattro fasi con chatgpt
Prima ipotesi, poi test rapidi, poi fix, infine verifica.

1) Prompt “Diagnosi + prossimo passo”

Quando usarlo: sempre, come prima mossa.

Prompt

Agisci come un senior JavaScript developer. Analizza questo errore e dammi:

  1. 3 ipotesi ordinate per probabilità
  2. 3 controlli rapidi per confermare/smentire
  3. la fix più probabile con codice corretto.
    Vincolo: Non inventare. Se manca un dato, fammi solo 3 domande.

Esempio errore
TypeError: 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 tipico
console.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

  1. se gestisco bene status code e JSON parsing
  2. come loggare in modo utile
  3. 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.

Esempio
ReferenceError: 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.

Esempio
Cannot 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

tabella astratta che collega errori javascript ai prompt chatgpt consigliati
Una mappa rapida: errore JavaScript → prompt da usare.
Errore / sintomoPrompt 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.