Débogage
Chrome DevTools MCP
Section intitulée « Chrome DevTools MCP »Utilisez chrome-devtools-mcp pour laisser Claude inspecter directement l’état du navigateur.
# Installpnpm dlx @anthropic-ai/chrome-devtools-mcpClaude peut alors :
- Inspecter les journaux/erreurs de la console
- Afficher les demandes de réseau
- Lire l’état du DOM
- Vérifiez le stockage local/les cookies
- Déboguer l’état du composant React
Cloudflare
Section intitulée « Cloudflare »Wrangler Tail (journaux en direct)
Section intitulée « Wrangler Tail (journaux en direct) »bash# Stream live logs from Workerswrangler tail
# Filter by statuswrangler tail --status error
# Filter by search termwrangler tail --search "userId"
# JSON output for parsingwrangler tail --format jsonDébogage D1
Section intitulée « Débogage D1 »bash# Query D1 directlywrangler d1 execute DB_NAME --command "SELECT * FROM users LIMIT 5"
# Export for inspectionwrangler d1 export DB_NAME --output dump.sql
# Local D1 (dev)wrangler d1 execute DB_NAME --local --command "SELECT * FROM users"Journaux des travailleurs (tableau de bord)
Section intitulée « Journaux des travailleurs (tableau de bord) »dash.cloudflare.com → Travailleurs → Votre travailleur → Journaux
- Flux de journaux en temps réel
- Filtrer par heure/statut
- Demander des traces avec timing
Middleware de journalisation des demandes
Section intitulée « Middleware de journalisation des demandes »tsimport { logger } from "hono/logger";
app.use("*", logger());Middleware de débogage personnalisé
Section intitulée « Middleware de débogage personnalisé »tsapp.use("*", async (c, next) => { const start = Date.now(); await next(); console.log(`${c.req.method} ${c.req.path} - ${c.res.status} (${Date.now() - start}ms)`);});Gestion des erreurs
Section intitulée « Gestion des erreurs »tsapp.onError((err, c) => { console.error(`${c.req.method} ${c.req.path}:`, err); return c.json({ error: err.message }, 500);});Journalisation des requêtes
Section intitulée « Journalisation des requêtes »tsimport { drizzle } from "drizzle-orm/d1";
const db = drizzle(env.DB, { logger: true // logs all queries});Enregistreur personnalisé
Section intitulée « Enregistreur personnalisé »tsconst db = drizzle(env.DB, { logger: { logQuery(query, params) { console.log("Query:", query); console.log("Params:", params); }, },});Requête TanStack
Section intitulée « Requête TanStack »Outils de développement
Section intitulée « Outils de développement »tsximport { ReactQueryDevtools } from "@tanstack/react-query-devtools";
function App() { return ( <QueryClientProvider client={queryClient}> <YourApp /> <ReactQueryDevtools initialIsOpen={false} /> </QueryClientProvider> );}Journalisation des requêtes
Section intitulée « Journalisation des requêtes »tsconst queryClient = new QueryClient({ defaultOptions: { queries: { onError: (err) => console.error("Query error:", err), }, mutations: { onError: (err) => console.error("Mutation error:", err), }, },});Meilleure authentification
Section intitulée « Meilleure authentification »Mode débogage
Section intitulée « Mode débogage »tsexport const auth = betterAuth({ logger: { disabled: false, level: "debug", // error | warn | info | debug },});Inspection de session
Section intitulée « Inspection de session »ts// Server-sideconst session = await auth.api.getSession({ headers });console.log("Session:", session);
// Client-sideconst { data } = authClient.useSession();console.log("Client session:", data);Débogage du réseau
Section intitulée « Débogage du réseau »Récupérer l’intercepteur (client)
Section intitulée « Récupérer l’intercepteur (client) »tsconst originalFetch = window.fetch;window.fetch = async (...args) => { console.log("Fetch:", args[0]); const res = await originalFetch(...args); console.log("Response:", res.status); return res;};Conseils environnementaux
Section intitulée « Conseils environnementaux »bash# Local dev with remote D1wrangler dev --remote
# Local dev with local D1wrangler dev --local
# Check bindingswrangler whoamiwrangler d1 list