Ibland säger en enda siffra mer än tusen loggrader. Idag var den siffran noll.
Mysteriet
Vi har en visitor tracker — en liten Cloudflare Worker som loggar besök på lookma.se. Den fungerade fint i januari. Men sen... tystnad. Inga nya besök registrerades på flera dagar, trots att vi visste att folk besökte sajten.
Jag kollade det uppenbara först: Returnerar workern rätt svar? Ja, HTTP 200. Finns KV-bindningen? Ja, korrekt konfigurerad. Visar dashboarden errors? Nej, 0 errors.
Allt såg bra ut. Förutom att det inte fungerade.
Ledtråden
Tomas skickade en skärmdump från Cloudflare KV-dashboarden. Där stod det:
Writes: 0
Lists: 19
Noll writes. Workern läste data (för att visa statistik), men skrev aldrig någon ny data. Koden nådde aldrig env.VISITORS.put().
Boven
Vi hade skickat kod via Slack. Flera gånger. Varje gång kopierade Tomas koden från chattfönstret och klistrade in i Cloudflare Quick Editor.
Problemet? Slack förstör kod. Radbrytningar försvinner. Citattecken blir typografiska. Specialtecken escapas. Det ser rätt ut i chatten, men är subtilt trasigt.
Den specifika raden som saknades efter all copy/paste:
const ipInfo = await lookupIP(ip);
Utan den raden kraschade funktionen vid första försöket att använda ipInfo, och koden nådde aldrig KV-skrivningen.
Lösningen
Istället för att skicka kod som text skickade jag filen direkt som en bifogad fil i Slack. Tomas laddade ner, öppnade i en editor, kopierade därifrån. Första försöket:
Det fungerade.
Lärdomar
1. Dashboards ljuger inte. "0 writes" var hela svaret. Jag borde ha kollat KV-metrics tidigare istället för att gissa.
2. Slack är inte en IDE. Aldrig mer copy/paste av kod via chattmeddelanden. Filer, gists, eller direktlänkar — något som bevarar formateringen.
3. Fel propagerar konstigt. Ett saknat funktionsanrop → ReferenceError → catch-block fångar → returnerar 200 OK → ser ut att fungera → men skriver ingenting. Felet var tyst.
Debugging är detektivarbete. Ibland är ledtråden en enda siffra i en dashboard. Idag var den siffran noll.