SyntaxError 59
Yazım hatası: kod daha çalışmadan, dilin kurallarına uymayan bir yer bulundu (eksik parantez, fazla süslü parantez, yanlış işaret).
> işareti çıktı, komutlar Uncaught SyntaxError veriyor
Terminale yalnızca node yazıp Enter'a basınca. Node, satır satır JavaScript yazabileceğin etkileşimli moduna girer ve istem > olur. Bu modda yazdığın her şeyi JavaScript sanır; node merhaba.js JavaScript olmadığı…
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
SyntaxError: missing ) after argument list
Açtığın parantezi kapatmayı unutunca.
Ders 1: İlk programın: console.log, değişkenler ve hata okuma →
SyntaxError: Invalid or unexpected token
Tırnağı açıp kapatmayınca ya da kıvrık (akıllı) tırnak “ ” kullanınca. Token, JavaScript'in okuduğu en küçük parça demek; mesaj "geçersiz ya da beklenmeyen bir parça buldum" diyor.
Ders 1: İlk programın: console.log, değişkenler ve hata okuma →
SyntaxError: Unexpected number
Değişken oluştururken = işaretini unutunca: let hp 100. Yukarıda, değişken oluşturma kalıbı bölümünde gördün.
Ders 1: İlk programın: console.log, değişkenler ve hata okuma →
SyntaxError: Identifier 'hp' has already been declared
Aynı adla ikinci kez let (ya da const) yazınca.
Ders 1: İlk programın: console.log, değişkenler ve hata okuma →
SyntaxError: Unexpected token '<' (ters yazılmış <=)
"Küçük ya da eşit" işaretini ters yazınca: =<.
Ders 2: Karşılaştırma ve karar: if / else →
SyntaxError: Unexpected end of input
Açtığın bir { işaretini kapatmayı unutunca. Node dosyanın sonuna gelir ama blok hâlâ açıktır. Yukarıda, VS Code'un yardımı bölümünde gördün.
Ders 2: Karşılaştırma ve karar: if / else →
SyntaxError: Unexpected token '}' (fazla süslü parantez)
Fazladan bir } yazınca, çoğu zaman bir bloğu iki kez kapatınca.
Ders 2: Karşılaştırma ve karar: if / else →
SyntaxError: Unexpected token 'else'
if bloğunu kapatmadan else yazınca.
Ders 2: Karşılaştırma ve karar: if / else →
SyntaxError: Unexpected token '{' (else'e koşul yazmak)
else'in arkasına bir koşul yazınca.
Ders 2: Karşılaştırma ve karar: if / else →
SyntaxError: Unexpected token '{' (If büyük harfle)
if'i büyük harfle yazınca: If.
Ders 2: Karşılaştırma ve karar: if / else →
SyntaxError: Unexpected identifier 'hp'
Koşulun parantezlerini unutunca.
Ders 2: Karşılaştırma ve karar: if / else →
SyntaxError: Unexpected token '}' (süslüyü hemen kapatmak)
Fonksiyonun süslü parantezini ilk satırda hemen kapatıp gövdeyi altına yazınca. Gövde sandığın satırlar fonksiyonun dışında kalır, en sondaki } işareti de fazla gelir.
Ders 3: Çoklu karar ve fonksiyon →
SyntaxError: Unexpected token '{' (bitişik elseif)
else if sözcüklerini bitişik (elseif) yazınca. Aynı mesajı Ders 2'de else sözcüğüne koşul yazınca da görmüştün; ısınmadaki if (mana > 10 { satırı da bu mesajı verir.
Ders 3: Çoklu karar ve fonksiyon →
SyntaxError: Unexpected token 'else' (else'ten sonra else if)
else bloğundan sonra bir else if daha yazınca. else "geri kalan her şey" demektir, zincirin son halkasıdır.
Ders 3: Çoklu karar ve fonksiyon →
SyntaxError: Unexpected token '<='
Aralık sorarken ikinci karşılaştırmanın sol yanındaki adı yazmayınca.
Ders 3: Çoklu karar ve fonksiyon →
SyntaxError: Unexpected string
Tanımın parantezine değer yazınca: function selamla("Ahri"). Tanımla çağrıyı karıştırmak demek bu.
Ders 3: Çoklu karar ve fonksiyon →
SyntaxError: Invalid shorthand property initializer
Objenin içinde anahtar ile değerin arasına : yerine = yazınca. Değişken oluştururken = yazmaya alışan parmak bunu sık yapar.
Ders 4: Obje: bir şampiyonun bütün bilgisi tek kutuda →
SyntaxError: Unexpected identifier 'hp'
İki alanın arasındaki virgülü unutunca. JavaScript "Ahri"'den sonra virgül ya da } bekliyordu, karşısına yeni bir ad (hp) çıktı. Identifier "ad" demek; mesaj "beklenmeyen ad: hp" diyor.
Ders 4: Obje: bir şampiyonun bütün bilgisi tek kutuda →
SyntaxError: Unexpected identifier 'console'
Çok satırlı bir objeyi kapatan }'yi unutunca. Mesajdaki ad, objeden sonraki satır neyle başlıyorsa odur; burada console.
Ders 4: Obje: bir şampiyonun bütün bilgisi tek kutuda →
SyntaxError: Identifier 'i' has already been declared (for'da virgül)
for'un parantezindeki parçaları noktalı virgül yerine virgülle ayırınca.
Ders 5: Dizi ve döngü: bütün takım →
SyntaxError: Unexpected token '{' (objeler arasında virgül yok)
Dizideki iki objenin arasına virgül koymayı unutunca. Ders 4'teki "virgül unutmak" hatasının dizideki hâli.
Ders 5: Dizi ve döngü: bütün takım →
SyntaxError: Unexpected end of input
Bir süslü parantez { açıp kapatmayınca. JavaScript kapanışı ararken dosyanın sonuna gelir.
Ders 8: Tekrar ve yardımsız mini sınav →
SyntaxError: missing ) after argument list
Bir parantezi kapatmayınca. Daha sinsi olanı: parantez yerinde olduğu hâlde, metinle değişkenin arasına + koymayı unutunca.
Ders 8: Tekrar ve yardımsız mini sınav →
SyntaxError: Unexpected end of input (kapanmamış ters tırnak)
Ters tırnağı açıp kapatmayı unutunca. Çift tırnaklı metin satır sonunda biter; ters tırnaklı metin ise çok satırlı olabildiği için JavaScript kapanışı dosyanın sonuna kadar arar, bulamayınca "girdi beklenmedik yerde…
Ders 9: Metinler ve sayılarla çalışmak →
SyntaxError: Unexpected token 'return'
Ters hata: tek satırlık ok fonksiyonuna return yazınca.
Ders 10: Fonksiyonlar derinlemesine →
SyntaxError: Illegal break statement
forEach'i yarıda kesmek için içine break yazınca. break yalnızca gerçek döngülerin (for, for...of, while) içinde çalışır; forEach'e verdiğin şey bir döngü değil, bir fonksiyon. Node bunu daha program başlamadan fark…
Ders 11: Dizi metotları: map, filter, find, reduce →
SyntaxError: Rest parameter must be last formal parameter
Geri kalanı toplayan parametreden sonra başka bir parametre yazınca.
Ders 12: Obje ve dizilerde ileri teknikler →
SyntaxError: Expected property name or '}' in JSON at position 2 (line 1 column 3)
JSON.parse'a JSON kurallarına uymayan bir metin verince. En sık sebepler: anahtarlarda tırnak yok, çift tırnak yerine tek tırnak kullanılmış, sonda fazladan virgül var.
Ders 12: Obje ve dizilerde ileri teknikler →
SyntaxError: Missing catch or finally after try
try bloğunu yazıp arkasına catch (ya da birazdan göreceğin finally) eklemeyince.
Ders 13: Hatalarla barışmak: try, catch, throw →
try bloğunun dışında kalan hata
Hata çıkarabilecek satırı try'ın dışına yazınca. try / catch yalnızca kendi süslü parantezleri içindeki satırları korur.
Ders 13: Hatalarla barışmak: try, catch, throw →
try / catch dosyadaki yazım hatasını yakalamaz
Dosyandaki bir yazım hatasını (SyntaxError) try ile yakalamayı umduğunda.
Ders 13: Hatalarla barışmak: try, catch, throw →
SyntaxError: The requested module './dukkan.js' does not provide an export named 'fiyatlar'
Vitrinde olmayan bir şeyi istediğinde: o dosyada export yazmayı unuttuğunda ya da adı farklı yazdığında (fiyatbul, FiyatBul).
Ders 14: Modüller ve npm →
SyntaxError: The requested module './dukkan.js' does not provide an export named 'default'
Adlı dışa aktarılmış bir şeyi süslü parantezsiz almaya çalışınca.
Ders 14: Modüller ve npm →
SyntaxError: Cannot use import statement outside a module
package.json'da "type": "commonjs" yazarken .js dosyasında import kullanınca. npm init bu satırı kendiliğinden yazdığı için ilk karşılaşacağın yer burası.
Ders 14: Modüller ve npm →
SyntaxError: await is only valid in async functions and the top level bodies of modules
await'i başında async olmayan bir fonksiyonun içinde kullanınca.
Ders 15: Asenkron JavaScript: Promise ve async/await →
En üstte await: CommonJS dosyasında SyntaxError
CommonJS sayılan bir dosyanın en üstünde (hiçbir fonksiyonun içinde değilken) await kullanınca.
Ders 15: Asenkron JavaScript: Promise ve async/await →
SyntaxError: Unexpected token '<', "<?xml vers"... is not valid JSON
Sunucu "böyle bir şey yok" dediğinde yanıtı denetlemeden json() ile okumaya kalkınca.
Ders 15: Asenkron JavaScript: Promise ve async/await →
SyntaxError: Private field '#hp' must be declared in an enclosing class
Özel alana sınıfın dışından ulaşmaya çalışınca. Sınıfın içinde this.#hp yazıp sınıfın gövdesine #hp satırını koymayı unutunca da aynı mesaj çıkar.
Ders 16: Sınıflar ve this →
SyntaxError: Unexpected token ','
Sınıfın metotları arasına, objedeki gibi virgül koyunca.
Ders 16: Sınıflar ve this →
SyntaxError: Cannot use import statement outside a module
package.json'daki "type": "commonjs" satırını "module" yapmayı unutunca. Node dosyayı eski düzende okur ve import'u tanımaz. Bu hatayı Ders 14'ten tanıyorsun; yeni bir projede npm init -y'den hemen sonra en sık…
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
SyntaxError: The requested module './oyuncu.js' does not provide an export named 'Oyuncu'
İçe aktardığın ad öteki dosyada dışa aktarılmamışsa; örneğin class Oyuncu yazıp başına export koymayı unutunca.
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
SyntaxError: Expected double-quoted property name in JSON
JSON.parse'a JSON kurallarına uymayan bir metin verince. Buradaki metin yarıda kesilmiş:
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
Uncaught SyntaxError: Invalid left-hand side in assignment
CSS özelliğini JavaScript'te tireli adıyla yazınca:
Ders 22: DOM: JavaScript sayfayla konuşuyor →
SyntaxError: "undefined" is not valid JSON
Depodaki metin JSON değilse. Mesajı Ders 12'den tanıyorsun. Sık yaşanan bir yol: kaydet'i parametreli yazıp (function kaydet(liste)) bir yerde argümanı unutmak. JSON.stringify(undefined) metin değil undefined…
Ders 23: Formlar, kullanıcı girdisi ve localStorage →
Uncaught SyntaxError: Cannot use import statement outside a module
etiketinde type="module" yazmayı unutunca. Tarayıcı dosyayı eski usul düz betik sanar ve ilk satırdaki import'u tanımaz:
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
SyntaxError: Unexpected token 'A', "Ahri,Lux" is not valid JSON
Diziyi JSON.stringify olmadan kaydedip sonra JSON.parse ile okumaya çalışınca. Tarayıcıda olanı Node'da taklit edelim:
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
Yanıtın türüne bakmadan json() çağırınca, gövde de bir HTML sayfası olunca. Denemek için ders26 klasöründe tur.mjs adında bir dosya oluştur. Burada POST bekleyen adrese GET gidiyor; sunucu 405 ve bir HTML sayfasıyla…
Ders 26: HTTP derinlemesine →
SyntaxError: Unexpected reserved word
for await ya da await yazdığın fonksiyonun başına async koymayı unutunca.
Ders 27: Node.js ile ilk sunucu →
SyntaxError: Unexpected token 'L', "Lux" is not valid JSON
Gövdesi JSON olmayan bir POST geldiğinde, JSON.parse try içinde değilse. Tek bir bozuk istek bütün sunucuyu düşürür.
Ders 27: Node.js ile ilk sunucu →
SyntaxError: Unexpected end of JSON input
JSON.parse'a boş bir metin verince: içi boşalmış bir dosya, yarıda kesilmiş bir yazma, elle boşaltılmış bir kayıt. "JSON girdisi beklenmedik yerde bitti" demek.
Ders 29: Dosya sistemi, ortam değişkenleri ve gizli bilgiler →
SyntaxError: Unexpected token '<', "<!doctype "... is not valid JSON
API'nin adresi yerine belgenin sayfasını isteyince. Belgeden kopyalarken en sık yapılan yanlış bu: open-meteo.com/en/docs insanlar için bir web sayfası, api.open-meteo.com/v1/forecast ise programlar için API. Bu…
Ders 30: Dış API'lere bağlanmak →
SyntaxError: Unexpected end of JSON input (her istek 500 alıyor)
veri.json boş ya da yarım kalmışsa. writeFile önce dosyanın içini boşaltır, sonra yeni içeriği yazar; program tam o arada kapanırsa (barındırıcı yeniden başlatırken, elektrik kesilince) dosya boş kalabilir. Bu, Ders…
Ders 32: Yayına alma ve Blok 4 projesi: takım API'si →
SQL'deki çift tırnak JavaScript metnini kapatıyor
İçinde "oyuncuId" gibi çift tırnaklı bir takma ad geçen SQL'i çift tırnaklı bir JavaScript metnine yazınca. JavaScript metni ilk iç tırnakta biter sanır.
Ders 37: Node.js'ten PostgreSQL'e bağlanmak →
JSON kod bloğuna sarılmış: Unexpected token
Model JSON'u Markdown'daki gibi üç ters tırnak ve json sözcüğüyle başlayan bir kod bloğuna koyduğunda. JSON.parse daha ilk karakterde, ters tırnakta takılır.
Ders 48: İstem yazmak ve yapılandırılmış çıktı →
SyntaxError: Unexpected non-whitespace character after JSON
JSON doğru ama arkasından fazladan bir şey geliyor; burada modelin eklediği bir nezaket cümlesi.
Ders 48: İstem yazmak ve yapılandırılmış çıktı →
SyntaxError: Unterminated string in JSON
Cevap max_tokens sınırına takılıp cümlenin ortasında kesildiğinde. Bu durumda mesaj.stop_reason değeri "max_tokens" olur ve yapılandırılmış çıktı bile yarım JSON'u tamamlayamaz. Kesilmiş bir cevabı json-dene.ts'te dene:
Ders 48: İstem yazmak ve yapılandırılmış çıktı →
SyntaxError: The requested module './ajan.ts' does not provide an export named 'Istemci'
Bir tipi import type yerine düz import ile alıp programı doğrudan node ile çalıştırınca. Burada sahte-istemci.ts'nin ikinci satırında type sözcüğü unutulmuş:
Ders 50: Basit bir ajan yazmak →
SyntaxError: Unexpected token '<<'
Çakışma işaretlerinden biri dosyada unutulmuşsa. Commit bile edilmiş olabilir; Git içeriğe bakmaz, Node bakar.
Ders 52: Takım çalışması: Git dalları ve pull request →
TypeError 51
Tür hatası: bir değerle yapılamayacak bir şeyi yapmaya çalıştın (sayıyı fonksiyon gibi çağırmak, olmayan bir şeyin özelliğini okumak).
TypeError: console.lg is not a function
log sözcüğünü yanlış yazınca (lg, lgo, Log).
Ders 1: İlk programın: console.log, değişkenler ve hata okuma →
TypeError: Assignment to constant variable.
const ile açtığın kutunun değerini değiştirmeye çalışınca.
Ders 1: İlk programın: console.log, değişkenler ve hata okuma →
TypeError: Cannot read properties of undefined (reading 'isim')
Obje bekleyen bir fonksiyonu argüman vermeden çağırınca. Ders 3'ten hatırla: verilmeyen parametre undefined olur. Fonksiyon da undefined'ın alanını okumaya çalışır.
Ders 4: Obje: bir şampiyonun bütün bilgisi tek kutuda →
TypeError: Cannot set properties of undefined (setting 'ad')
Var olmayan bir iç objenin alanına değer vermeye çalışınca. Okumadaki hatanın yazma hâli.
Ders 4: Obje: bir şampiyonun bütün bilgisi tek kutuda →
TypeError: takim.length is not a function
length'in sonuna parantez koyunca. JavaScript parantezi görünce length'i bir fonksiyon gibi çalıştırmaya kalkar.
Ders 5: Dizi ve döngü: bütün takım →
TypeError: takim.Push is not a function
Metodun adını yanlış yazınca: Push, puhs, Pop. Metot adları da büyük-küçük harfe duyarlıdır.
Ders 5: Dizi ve döngü: bütün takım →
TypeError: Assignment to constant variable. (for'da const)
"Önce const yaz" alışkanlığıyla klasik for'un sayacını const ile açınca.
Ders 5: Dizi ve döngü: bütün takım →
TypeError: Cannot read properties of undefined (reading 'isim') (döngüde bir fazla tur)
Olmayan bir yuvadaki objenin alanını okuyunca. En sık sebebi bir önceki karttaki <=: fazladan dönen son turda takim[i] undefined'dır ve undefined'ın alanı okunamaz. Ders 4'te tanıştığın hatanın dizideki hâli.
Ders 5: Dizi ve döngü: bütün takım →
TypeError: Cannot read properties of undefined (reading 'hp')
Takım savaşında turOyna'daki if (!takimHayattaMi(savunanlar)) { return } kontrolünü silince. Rakip takımın son canlısı turun ortasında ölürse sıradaki saldıran için hedefBul undefined döndürür ve saldir olmayan bir…
Ders 6: return ve ilk mini proje: takım savaşı →
TypeError: Cannot read properties of undefined (reading 'hp')
undefined olan bir şeyin içine bakmaya çalışınca: dizide olmayan bir sıra numarası, return'ü unutulmuş bir fonksiyonun sonucu, yanlış yazılmış bir alan adı.
Ders 8: Tekrar ve yardımsız mini sınav →
TypeError: Assignment to constant variable.
const ile açtığın kutuyu değiştirmeye çalışınca; en sık da döngüde toplam ya da sayaç tutarken.
Ders 8: Tekrar ve yardımsız mini sınav →
TypeError: kill.padStart is not a function
Bir metin metodunu sayıda çağırınca. Sayıların padStart, toUpperCase, includes, slice gibi metotları yoktur.
Ders 9: Metinler ve sayılarla çalışmak →
TypeError: oran.toFixed is not a function
Tersi: sayı metodu olan toFixed'i metinde çağırınca. Değer çoğu zaman split'ten ya da dışarıdan metin olarak gelmiştir.
Ders 9: Metinler ve sayılarla çalışmak →
TypeError: isim.toUppercase is not a function
Metot adını yanlış yazınca. Metot adları camelCase'tir ve büyük-küçük harfe duyarlıdır: toUpperCase doğru; toUppercase, touppercase, ToUpperCase yanlış. Aynı hata Number.isNan (doğrusu isNaN) ve Math.Round (doğrusu…
Ders 9: Metinler ve sayılarla çalışmak →
TypeError: Cannot read properties of undefined (reading 'trim')
split beklediğinden az parça verince, olmayan parçanın metodunu çağırırsan. Olmayan parça undefined'dır ve undefined'ın ne alanı ne metodu vardır (Ders 5'te enYuksek.isim ile görmüştün).
Ders 9: Metinler ve sayılarla çalışmak →
TypeError: islem is not a function
Callback bekleyen bir fonksiyona fonksiyon vermeyi unutunca (ya da fonksiyon yerine başka bir değer verince).
Ders 10: Fonksiyonlar derinlemesine →
TypeError [ERR_INVALID_ARG_TYPE]: The "callback" argument must be of type function. Received undefined
setTimeout'a fonksiyonu vermek yerine fonksiyonu çağırıp sonucunu verince.
Ders 10: Fonksiyonlar derinlemesine →
TypeError: Cannot read properties of undefined (reading 'hp')
find aradığını bulamayıp undefined döndürdüğünde, sonucu denetlemeden bir alanını okuyunca. undefined'ın alanı olmaz; Ders 4'te gördüğün hatanın aynısı.
Ders 11: Dizi metotları: map, filter, find, reduce →
TypeError: Reduce of empty array with no initial value
Boş bir dizide, başlangıç değeri vermeden reduce çağırınca. Başlangıç değeri yoksa reduce dizinin ilk elemanını başlangıç sayar; dizi boşsa başlayacak bir şey bulamaz.
Ders 11: Dizi metotları: map, filter, find, reduce →
TypeError: Cannot read properties of undefined (reading 'Demacia')
reduce'un callback'inde biriktiriciyi return etmeyi unutunca. İlk tur sorunsuz geçer ama hiçbir şey döndürmediği için ikinci turda biriktirici undefined olur.
Ders 11: Dizi metotları: map, filter, find, reduce →
TypeError: Cannot read properties of undefined (reading 'map')
Zincirin ortasına forEach koyunca. forEach undefined döndürür; zincir orada kopar ve bir sonraki halka undefined'ın üstünde çalışmaya kalkar.
Ders 11: Dizi metotları: map, filter, find, reduce →
TypeError: Cannot destructure property 'isim' of 'undefined' as it is undefined.
Parçalanacak şey undefined olduğunda. En sık hâli: objeyi parçalayan bir fonksiyonu argümansız çağırmak.
Ders 12: Obje ve dizilerde ileri teknikler →
TypeError: Cannot read properties of undefined (reading 'hp')
undefined olan bir şeyin alanını okumaya çalışınca. Sebep çoğu zaman bir önceki adımdadır: find aradığını bulamadı (Ders 11'de gördüğün durum), objede o alan yok, dizinin olmayan bir sırası istendi ya da bir…
Ders 12: Obje ve dizilerde ileri teknikler →
TypeError: ahri is not iterable
Bir objeyi for...of ile gezmeye ya da diziymiş gibi yaymaya ([...ahri]) kalkınca. Yukarıda, objenin bütün alanlarını gezmek bölümünde gördün. Dizi parçalamada da çıkar: const [ilk] = oyuncu.
Ders 12: Obje ve dizilerde ileri teknikler →
TypeError: Cannot read properties of null (reading 'ad')
null olan bir şeyin alanını okumaya çalışınca. undefined'lı hâlinin kardeşi; fark, boşluğu bu kez birinin bilerek koymuş olması.
Ders 12: Obje ve dizilerde ileri teknikler →
TypeError [ERR_INVALID_MODULE_SPECIFIER]: Invalid module
Yolu Windows'taki gibi ters eğik çizgiyle (\) yazınca.
Ders 14: Modüller ve npm →
TypeError: fetch failed
İstek sunucuya hiç ulaşamayınca: adres yanlış yazılmışsa (alan adı yoksa) ya da internet bağlantın yoksa. fetch'in kendisinin reddedildiği durum budur.
Ders 15: Asenkron JavaScript: Promise ve async/await →
TypeError: fetch(...).json is not a function
İki await'i tek satırda birleştirmeye çalışınca.
Ders 15: Asenkron JavaScript: Promise ve async/await →
TypeError: Class constructor Sampiyon cannot be invoked without 'new'
Sınıfı bir fonksiyon gibi, başına new yazmadan çağırınca.
Ders 16: Sınıflar ve this →
TypeError: this.durum is not a function
Bir metodu parantezsiz olarak başka bir fonksiyona verince: setTimeout(ahri.yenidenDog, 100) gibi. Metot objesinden kopar ve this artık Ahri olmaz. Mesajdaki ad, metodun içinde neye ulaşılmaya çalışıldığına göre…
Ders 16: Sınıflar ve this →
TypeError: garen.canYuzdesi is not a function
Getter'ı bir metot gibi, parantezle çağırınca.
Ders 16: Sınıflar ve this →
TypeError: ahri.saldir is not a function
Bir alana, bir metotla aynı adı verince. Burada saldırı gücü this.saldir alanına konmuş. Alan objenin kendisinde, metot ise kalıpta durur; JavaScript önce objenin kendisine baktığı için alan metodu örter ve…
Ders 16: Sınıflar ve this →
TypeError: veri.durum is not a function
Dosyadan okuyup JSON.parse ile çevirdiğin objenin metodunu çağırınca.
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
TypeError: Invalid URL
new URL'e adresi protokolsüz verince. Tarayıcının adres çubuğu xdd.baby yazmana izin verir, başına https://'yi kendisi ekler; JavaScript eklemez.
Ders 18: Web nasıl çalışır? →
Uncaught TypeError: Cannot set properties of null (setting 'textContent')
querySelector öğeyi bulamayıp null verdiğinde o null'a bir şey yazmaya çalışınca. En sık sebep seçicide noktayı ya da #'yi unutmak:
Ders 22: DOM: JavaScript sayfayla konuşuyor →
Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')
Dinleyici takmak istediğin öğe null olunca. İki sebebi var: betik head'de ve defer'siz (öğe henüz yok) ya da seçici yanlış (öyle bir öğe yok).
Ders 22: DOM: JavaScript sayfayla konuşuyor →
Uncaught TypeError: document.querySelectorAll(...).addEventListener is not a function
Bir öğe listesine (NodeList) doğrudan dinleyici takmaya çalışınca:
Ders 22: DOM: JavaScript sayfayla konuşuyor →
TypeError: Cannot read properties of null (reading 'filter')
Uygulama ilk kez açıldığında. O anahtarla hiç kayıt yapılmadığı için getItem null döndürür, JSON.parse(null) da hata vermeden null verir. maclar artık bir dizi değil null'dır ve onu dizi gibi kullanan ilk satır patlar.
Ders 23: Formlar, kullanıcı girdisi ve localStorage →
TypeError: yanit.json is not a function
fetch'in önüne await yazmayı unutunca.
Ders 24: Tarayıcıdan veri çekmek: fetch ve API →
TypeError: Cannot convert undefined or null to object
Gövdeyi json() yerine text() ile okuyunca ya da yanit.json()'un önündeki await'i unutunca.
Ders 24: Tarayıcıdan veri çekmek: fetch ve API →
TypeError: Failed to fetch
Tarayıcı kullanılabilir hiçbir cevap alamayınca: internet yoksa, alan adı yanlışsa ya da CORS izni yoksa. Node'daki karşılığı TypeError: fetch failed idi (Ders 15). Sayfamız bu hatayı yakalar ve ekrana hata durumunu…
Ders 24: Tarayıcıdan veri çekmek: fetch ve API →
TypeError: Cannot read properties of null (reading 'includes')
Bu, ekrandaki mesajın yalan söylediği bir hata. favorileriOku'yu kısa yazıp null denetimini atladığımızda tarayıcıda gerçekten olan şu oldu:
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
TypeError: Request with GET/HEAD method cannot have body.
fetch'e gövde verip method yazmayı unutunca. fetch'in varsayılan metodu GET'tir ve bir GET isteğinin gövdesi olamaz.
Ders 26: HTTP derinlemesine →
TypeError: Cannot read properties of undefined (reading 'isim')
express.json() olmadan req.body'den bir alan okumaya kalkınca. Express gövdeyi kendiliğinden okumaz; okuyacak ara katmanı eklemediysen req.body undefined kalır.
Ders 28: Express ile API →
TypeError: Cannot read properties of undefined (reading 'slice')
Tanımlanmamış bir ortam değişkenini metin sanıp kullanınca. process.env.X yoksa hata vermez, sessizce undefined döner; hata ancak değeri kullanırken çıkar.
Ders 29: Dosya sistemi, ortam değişkenleri ve gizli bilgiler →
TypeError: fetch failed ve altında ECONNREFUSED
İstek attığın adreste dinleyen bir program yokken: sahte servisi başlatmayı unuttun, Ctrl+C ile durdurdun ya da portu yanlış yazdın.
Ders 30: Dış API'lere bağlanmak →
TypeError: Cannot read properties of undefined (reading 'oturum')
app.use(cookieParser()) satırını unutunca: req.cookies hiç oluşmaz. Express isteğe 500 Internal Server Error döner ve sunucunun terminaline şunu yazar:
Ders 31: Kimlik doğrulama ve güvenlik temelleri →
TypeError: Cannot read properties of undefined (reading 'rol')
Ara katmanları ters sıraya koyunca: yoneticiGerekli, girisGerekli. yoneticiGerekli çalıştığında req.kullanici henüz yok; herkes 500 alır, yönetici bile:
Ders 31: Kimlik doğrulama ve güvenlik temelleri →
TypeError: Cannot read properties of undefined (reading 'length')
pool.query'nin önüne await yazmayı unutunca. Elindeki şey sonuç değil, henüz bitmemiş bir Promise; onun rows diye bir alanı yok (Ders 15).
Ders 37: Node.js'ten PostgreSQL'e bağlanmak →
TypeError: bolucu.segment(...).map is not a function
segment'in sonucuna doğrudan map uygulayınca. Sonuç gezilebilir bir nesne ama dizi değil; dizi metotları onda yok.
Ders 51: Kendi verinle yapay zekâ ve Blok 7 projesi →
TypeError: Reduce of empty array with no initial value (sınır durumu denenince)
reduce'a başlangıç değeri vermeden onu boş bir dizide çağırınca. İlk iki örnek doğru çıktı; boş dizi denenince program çöktü.
Ders 55: Mülakata hazırlık ve sonrası →
SQL 54
column "Ahri" does not exist
Metni JavaScript alışkanlığıyla çift tırnakla yazınca. SQL'de çift tırnak metin değil, ad (tablo ya da sütun adı) demektir; Postgres Ahri adında bir sütun arar, bulamaz.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
syntax error at or near "SELECT"
Editörde iki komut var ve aralarındaki noktalı virgülü unuttun. Postgres ikisini tek komut sanır ve ikinci SELECT'e gelince takılır.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
syntax error at or near ")"
Son sütundan sonra virgül bırakınca. JavaScript'te dizinin son elemanından sonra virgül sorun olmuyordu; SQL'de oluyor.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
relation "sampiyon_havuzu" already exists
Aynı CREATE TABLE'ı ikinci kez çalıştırınca. Çoğu zaman bilerek değil: editörde eski CREATE TABLE duruyorken yeni bir komut ekleyip Run'a basınca.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
INSERT has more expressions than target columns
Ondalık sayıyı Türkçe alışkanlıkla virgülle yazınca. 51,61 Postgres için iki ayrı değerdir: 51 ve 61. Değer sayısı sütun sayısını geçer.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
invalid input syntax for type integer
Bir sütuna tipine uymayan değer yazınca. Excel'in izin verdiği şeyi Postgres reddeder.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
Gün ile ay yer değiştirdi (hata mesajı yok)
Tarihi 09.10.2026 gibi gün.ay.yıl sırasıyla yazınca. Postgres bu biçimi varsayılan olarak ay.gün.yıl diye okur. Gün 12'den büyükse hata verir ('25.10.2026' için date/time field value out of range), değilse sessizce…
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
relation "sampiyonlar" does not exist
Tablo adını yanlış yazınca ya da tabloyu kurmadan kullanınca. Burada Ders 27–32'deki API'den kalma alışkanlıkla sampiyonlar yazılmış.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
column "macsayisi" of relation "sampiyon_havuzu" does not exist
Sütun adını JavaScript alışkanlığıyla camelCase yazınca. Mesajdaki adın küçük harfe dönmüş olduğuna dikkat et: Postgres tırnaksız adı macsayisi'ye çevirdi ve öyle bir sütun bulamadı.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
duplicate key value violates unique constraint "…_pkey"
Birincil anahtar sütununa tabloda zaten olan bir değeri yazınca. Birincil anahtar bölümünde şampiyon adını anahtar yaptığında gördün. DETAIL satırı hangi değerin zaten olduğunu söyler: Key (sampiyon)=(Ahri) already…
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
null value in column "…" violates not-null constraint
Boş olamayan bir sütunu (birincil anahtar gibi) INSERT'te yazmayınca ya da ona NULL verince. Yazmadığın her sütuna NULL konur. DETAIL satırı reddedilen satırın tamamını gösterir: Failing row contains (null, Orman).
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
cannot insert a non-DEFAULT value into column "id"
GENERATED ALWAYS AS IDENTITY olan bir sütuna elle değer yazınca. Anlamsız bir numara, Postgres versin bölümünde gördün.
Ders 33: Veritabanı nedir? PostgreSQL'e giriş →
syntax error at or near "FROM"
Sütun listesinin sonunda virgül bırakınca. SQL virgülden sonra bir sütun daha bekler, karşısına FROM çıkar.
Ders 34: SELECT: veriyi sorgulamak →
column "Ahri" does not exist
WHERE koşulunda metni çift tırnakla yazınca. SQL'de çift tırnak bir ad (sütun ya da tablo adı) demektir; PostgreSQL Ahri adında bir sütun arar, bulamaz.
Ders 34: SELECT: veriyi sorgulamak →
WHERE rol = NULL hiç satır döndürmüyor
Boş (NULL) değerleri = ile aramaya kalkınca. Hata mesajı yok; sorgu çalışır ve boş bir tablo döner. Bu yüzden fark etmesi zordur.
Ders 34: SELECT: veriyi sorgulamak →
division by zero
Bir sütuna bölerken o sütunda 0 olan bir satır varsa. Ece, Ashe maçında hiç ölmemiş (olum 0); her maçın KDA'sını hesaplamaya kalkınca sorgu o satırda durur. JavaScript sıfıra bölünce Infinity veriyordu (Ders 1);…
Ders 34: SELECT: veriyi sorgulamak →
column "maclar.rol" must appear in the GROUP BY clause or be used in an aggregate function
Gruplarken SELECT'e, grupta tek bir değeri olmayan bir sütun yazınca. Jinx'in dört maçı var ve rolleri farklı (alt ve boş); PostgreSQL Jinx satırına hangisini yazacağını bilemez.
Ders 34: SELECT: veriyi sorgulamak →
aggregate functions are not allowed in WHERE
WHERE içine COUNT, SUM, AVG gibi bir toplama fonksiyonu yazınca.
Ders 34: SELECT: veriyi sorgulamak →
column "katki" does not exist
SELECT'te verdiğin takma adı WHERE'de (ya da HAVING'de) kullanınca. WHERE çalışırken katki adı henüz verilmemiştir.
Ders 34: SELECT: veriyi sorgulamak →
syntax error at or near "WHERE"
Cümlecikleri yanlış sırayla yazınca. Aşağıda WHERE, ORDER BY'dan sonra yazılmış.
Ders 34: SELECT: veriyi sorgulamak →
column "sampion" does not exist
Sütun adını yanlış yazınca.
Ders 34: SELECT: veriyi sorgulamak →
invalid input syntax for type boolean: "Lux"
"Ahri ya da Lux" cümlesini sözcük sözcük çevirince.
Ders 34: SELECT: veriyi sorgulamak →
syntax error at or near "("
Çok satırlı INSERT'te iki satırın arasına virgül koymayı unutunca.
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
null value in column "ad" of relation "dukkan" violates not-null constraint
NOT NULL bir sütuna NULL yazınca ya da o sütunu INSERT'te hiç yazmayınca (ve sütunun DEFAULT'u da yoksa).
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
duplicate key value violates unique constraint "dukkan_ad_key"
UNIQUE (ya da birincil anahtar) olan bir sütuna, tabloda zaten bulunan bir değeri yazınca.
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
new row for relation "dukkan" violates check constraint "dukkan_fiyat_check"
Bir satırı CHECK koşulunu sağlamayan bir değerle eklemek ya da güncellemek isteyince.
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
value too long for type character varying(30)
varchar(30) bir sütuna 30 karakterden uzun bir metin yazınca. Ders 33'te varchar(16) ile aynı mesajı görmüştün.
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
column "eposta" of relation "hesaplar" contains null values
Dolu bir tabloya varsayılansız bir NOT NULL sütun eklerken ya da içinde NULL bulunan bir sütuna SET NOT NULL derken.
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
current transaction is aborted, commands ignored until end of transaction block
Transaction içindeki bir komut hata verdikten sonra, ROLLBACK demeden aynı bağlantıdan yeni bir komut gönderince.
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
check constraint "hesaplar_altin_check" of relation "hesaplar" is violated by some row
Dolu bir tabloya ALTER TABLE … ADD CHECK ile kural eklerken, tabloda kurala uymayan en az bir satır varsa. ALTER TABLE bölümünde eksi altınlı hesap yüzünden gördün.
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
Komut hatasız bitti ama hiçbir şey değişmedi
UPDATE ya da DELETE'in WHERE'i hiçbir satırı tutmayınca: 'Ahri' yerine 'ahri' yazmak, fazladan bir boşluk, yanlış bir id. Postgres bunu hata saymaz; "sıfır satırı değiştirdim" der ve geçer.
Ders 35: Veriyi değiştirmek ve tablo tasarımı →
insert or update on table "maclar" violates foreign key constraint "maclar_oyuncu_id_fkey"
Yabancı anahtar sütununa, gösterdiği tabloda olmayan bir değer yazınca. 99 numaralı bir oyuncu yok:
Ders 36: İlişkiler ve JOIN →
update or delete on table "oyuncular" violates foreign key constraint "maclar_oyuncu_id_fkey" on table "maclar"
Başka bir tablodaki satırların gösterdiği bir satırı silmeye çalışınca. Deniz'in dört maçı var; Deniz silinseydi o maçlar var olmayan bir oyuncuyu gösterirdi.
Ders 36: İlişkiler ve JOIN →
JOIN koşulunu unutmak: satırlar katlanır
ON kısmını yazmayı unutunca. JOIN yazdıysan Postgres seni durdurur:
Ders 36: İlişkiler ve JOIN →
Yanlış sütunları eşleştirmek: sonuç var ama yanlış
ON'a yabancı anahtar yerine iki tablonun da id'sini yazınca.
Ders 36: İlişkiler ve JOIN →
column reference "id" is ambiguous
İki tabloda da bulunan bir sütunun adını, hangi tablodan geldiğini söylemeden yazınca. id hem maclar'da hem oyuncular'da var:
Ders 36: İlişkiler ve JOIN →
invalid reference to FROM-clause entry for table "maclar"
Bir tabloya takma ad verdikten sonra, aynı sorguda tablonun asıl adını kullanınca.
Ders 36: İlişkiler ve JOIN →
LEFT JOIN'i WHERE ile farkında olmadan INNER JOIN'e çevirmek
LEFT JOIN'den sonra, sağdaki tablonun bir sütununa WHERE ile koşul koyunca. Amaç "her oyuncunun zaferleri, zaferi olmayanlar da görünsün":
Ders 36: İlişkiler ve JOIN →
LEFT JOIN'de COUNT(*) maçsız oyuncuya 1 yazıyor
Maçı olmayanları da göstermek için LEFT JOIN yapıp satırları COUNT(*) ile sayınca:
Ders 36: İlişkiler ve JOIN →
update or delete on table "sampiyonlar" violates RESTRICT setting of foreign key constraint "takim_sampiyonlari_sampiyon_id_fkey" on table "takim_sampiyonlari"
ON DELETE RESTRICT ile korunan bir satırı silmeye çalışınca. Jinx iki kadroda kullanılıyor:
Ders 36: İlişkiler ve JOIN →
cannot drop table oyuncular because other objects depend on it
Başka tabloların yabancı anahtarlarla gösterdiği bir tabloyu silmeye çalışınca.
Ders 36: İlişkiler ve JOIN →
foreign key constraint "yorumlar_oyuncu_id_fkey" cannot be implemented
Yabancı anahtar sütununun tipi, gösterdiği sütunun tipinden farklıysa.
Ders 36: İlişkiler ve JOIN →
there is no unique constraint matching given keys for referenced table "oyuncular"
REFERENCES ile birincil anahtar ya da UNIQUE olmayan bir sütunu göstermeye çalışınca. bolge sütununda aynı değer birçok satırda var:
Ders 36: İlişkiler ve JOIN →
invalid input syntax for type integer: "abc"
Sayı bekleyen bir sütunu, sayıya çevrilemeyen bir değerle sorgulayınca. Adres /oyuncular/abc olunca $1 "abc" olur ve Postgres onu integer'a çeviremez. Henüz hata yakalayıcın olmadığı için Express kendi varsayılan…
Ders 37: Node.js'ten PostgreSQL'e bağlanmak →
duplicate key value violates unique constraint "takim_sampiyonlari_pkey"
Ara tabloya aynı takım–şampiyon çiftini ikinci kez eklemeye kalkınca. Burada sebep veride: 9 numaralı takımın listesi ["Jinx", "Ahri", "Jinx"]. Ayrıntı satırı hangi çiftin tekrar ettiğini söylüyor: 9 numaralı takım,…
Ders 38: Blok 5 projesi: veritabanlı API →
409 aldım ama böyle bir takım yok: duplicate key value violates unique constraint "takimlar_pkey"
Eski numaralarla taşınan bir tabloya, sayaç ileri sarılmadan yeni satır eklenince. İlk denemede Key (id)=(1) already exists alırsın; aynı isteği tekrarladıkça 2, 3 diye ilerler, çünkü her başarısız deneme sayaçtan…
Ders 38: Blok 5 projesi: veritabanlı API →
argument of LIMIT must be type bigint, not type text
Sorguya yeni bir parametre ekleyip öbürlerinin numaralarını kaydırmayı unutunca. Burada WHERE t.ad ILIKE $1 eklendi, ama sorgunun sonunda hâlâ LIMIT $1 OFFSET $2 yazıyor:
Ders 38: Blok 5 projesi: veritabanlı API →
Büyük harfle arama boş dönüyor: ?ara=AVCI
Türkçe bir adı, içinde I olan büyük harflerle arayınca. Ders 32'deki API ?ara=AVCI ile Baron Avcıları'nı buluyordu; ILIKE'lı sürüm bulamıyor. Hata mesajı yok, liste boş:
Ders 38: Blok 5 projesi: veritabanlı API →
relation "kullanicilar" does not exist
notlar'ı, bağlı olduğu kullanicilar tablosundan önce kurmaya çalışınca: yalnız dosyanın sonunu seçip çalıştırdıysan ya da notlar'ı dosyanın başına yazdıysan. Boş bir veritabanında denedik:
Ders 46: Blok 6 projesi: tam yığın uygulama →
text search configuration "turkce" does not exist
Yapılandırmanın adını Türkçe yazınca.
Ders 51: Kendi verinle yapay zekâ ve Blok 7 projesi →
syntax error in tsquery
Kullanıcının yazdığını plainto_tsquery yerine to_tsquery'ye verince. to_tsquery metni kendi küçük dilinde yazılmış bir sorgu sanar (zed & zhonya gibi) ve sıradan bir cümleyi okuyamaz.
Ders 51: Kendi verinle yapay zekâ ve Blok 7 projesi →
generation expression is not immutable
Üretilen sütunda to_tsvector'e yapılandırma adını vermeyince.
Ders 51: Kendi verinle yapay zekâ ve Blok 7 projesi →
type "vector" does not exist
Uzantıyı o veritabanında açmadan vector tipinde bir sütun kurunca. Çoğu zaman uzantıyı başka bir veritabanında açtığın için olur: alıştırma veritabanında açıp uygulamanınkinde unutmak gibi.
Ders 51: Kendi verinle yapay zekâ ve Blok 7 projesi →
expected 2 dimensions, not 3
Sütunun boyutuyla uyuşmayan uzunlukta bir vektör yazınca. Gerçek projede en sık sebebi, gömme modelini ya da boyut ayarını değiştirip tabloyu değiştirmemek: vector(1024) sütununa 2.048 sayılık bir gömme yazarsan…
Ders 51: Kendi verinle yapay zekâ ve Blok 7 projesi →
Diğer 121
The term 'node' is not recognized
Kurulumdan önce açılmış bir terminalde node yazınca. Node hiç kurulmamışsa ya da komutu yanlış yazdıysan (nodee) da aynı mesaj gelir.
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
npm.ps1 cannot be loaded because running scripts is disabled on this system
npm --version yazınca. Windows'un varsayılan güvenlik ayarı PowerShell betiklerinin (.ps1 dosyalarının) çalışmasına izin vermez; Node 24 ile gelen npm komutu da PowerShell'de böyle bir betik olarak çalışır.
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
An item with the specified name C:\kod\ogren already exists.
Var olan bir klasörü yeniden oluşturmaya çalışınca; örneğin aynı mkdir komutunu ikinci kez çalıştırınca.
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
Cannot find path 'C:\kod\olmayan' because it does not exist.
cd ile var olmayan ya da adı yanlış yazılmış bir klasöre gitmeye çalışınca.
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
Sol altta Restricted Mode yazıyor
Klasörü açarken güven sorusuna No, I don't trust the authors dediysen. VS Code klasörü kısıtlı modda açar: üstte "Restricted Mode is intended for safe code browsing. Trust this folder to enable all features." yazan…
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
Error: Cannot find module 'C:\kod\merhaba.js'
Terminal, dosyanın olmadığı bir klasördeyken node merhaba.js yazınca. Burada terminal C:\kod'da, dosya ise C:\kod\ogren'de.
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
Dosyanın adı merhaba.js.txt olmuş
Dosyayı Dosya Gezgini'nde Yeni → Metin Belgesi (New → Text Document) ile oluşturup adını merhaba.js yapınca. Uzantılar gizliyse adın sonunda görünmeyen bir .txt kalır ve Node merhaba.js adında bir dosya bulamaz:
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
Hiçbir şey yazmıyor ya da eski çıktı geliyor
Dosyaya yazıp kaydetmeden çalıştırınca. Node diskteki dosyayı okur; kaydetmediysen diskte boş ya da eski bir dosya vardır. Boş dosya hata vermez, hiçbir şey yazmaz:
Ders 0: Başlamadan önce: bilgisayar, program ve araçların →
Çıktı değişmiyor (kaydedilmemiş dosya)
Kodu değiştirdin, çalıştırdın ama ekranda hâlâ eski çıktı var. Hata mesajı yok, ama program sanki seni dinlemiyor.
Ders 1: İlk programın: console.log, değişkenler ve hata okuma →
Author identity unknown
Git'e adını ve e-postanı hiç söylemediysen ilk commit'te çıkar.
Ders 1: İlk programın: console.log, değişkenler ve hata okuma →
Koşulda tek =: hata yok, sonuç yanlış
Karşılaştırmak isterken === yerine = yazınca: if (hp = 0). Mesaj çıkmaz; program yanlış yolu seçer ve değişkenin değerini de değiştirir. Yukarıda, En sinsi hata bölümünde gördün.
Ders 2: Karşılaştırma ve karar: if / else →
Süslüsüz if: yalnızca ilk satır koşula bağlı
if'ten sonra süslü parantez koymayıp altına birden çok satır yazınca. Mesaj çıkmaz; ikinci satırdan sonrası her durumda çalışır. Yukarıda, Süslü parantezi unutursan bölümünde gördün.
Ders 2: Karşılaştırma ve karar: if / else →
Fonksiyonu tanımladım ama hiçbir şey olmuyor
Fonksiyonu tanımlayıp hiç çağırmayınca. Program hatasız biter ama ekrana hiçbir şey yazmaz; yukarıdaki VS Code penceresinde gördüğün durum.
Ders 3: Çoklu karar ve fonksiyon →
Parantezsiz çağrı: [Function: durumYaz]
Fonksiyonu çağırırken parantezleri unutunca. Tek başına durumYaz yazmak fonksiyonu yalnızca anar, çalıştırmaz. Program sessizce devam eder:
Ders 3: Çoklu karar ve fonksiyon →
Çıktıda undefined var
Fonksiyonu çağırırken bir argümanı vermeyi unutunca. Hata mesajı çıkmaz; eksik parametrenin yerine undefined yazılır.
Ders 3: Çoklu karar ve fonksiyon →
nothing added to commit but untracked files present
git add . adımını atlayıp doğrudan git commit yazınca. Git yeni dosyayı görüyor, ama onu kayda eklemesini henüz istemedin.
Ders 3: Çoklu karar ve fonksiyon →
[object Object]: objeyi metinle + ile birleştirmek
Bir objeyi + ile bir metne eklemeye çalışınca. Hata mesajı yok, ama çıktı işe yaramaz:
Ders 4: Obje: bir şampiyonun bütün bilgisi tek kutuda →
Değişkendeki anahtarı noktayla okumak: undefined
Anahtar bir değişkenin ya da parametrenin içindeyken nokta kullanınca. Hata yok, ama değer hep undefined çıkar:
Ders 4: Obje: bir şampiyonun bütün bilgisi tek kutuda →
İsim yerine 0, 1, 2 çıkıyor (of yerine in)
for...of yazarken of yerine in yazınca. Hata mesajı yok, ama elemanlar yerine sıra numaraları gelir.
Ders 5: Dizi ve döngü: bütün takım →
Program bitmiyor, terminal aynı satırla doluyor (sonsuz döngü)
Döngünün koşulu hiç false olmayınca: değer gövdede değişmiyorsa, sayaç ters yöne gidiyorsa (i--) ya da while (true) içinde break yoksa. Hata mesajı yoktur; aynı satırlar durmadan akar ya da program hiçbir şey…
Ders 5: Dizi ve döngü: bütün takım →
Son turda undefined çıkıyor (<= ile bir fazla tur)
Diziyi gezerken koşula i < takim.length yerine i <= takim.length yazınca.
Ders 5: Dizi ve döngü: bütün takım →
Son eleman atlanıyor (bir eksik tur)
"Son numara length - 1" kuralını koşula taşıyınca: i < takim.length - 1. Hata mesajı yok, yalnızca eksik sonuç var.
Ders 5: Dizi ve döngü: bütün takım →
İlk eleman atlanıyor (sayaç 1'den başlamış)
İnsanlar gibi 1'den saymaya alışık olduğun için sayacı let i = 1 ile başlatınca.
Ders 5: Dizi ve döngü: bütün takım →
Döngü hiç dönmüyor (lenght yazım hatası)
length'i lenght diye yanlış yazınca. Hata mesajı çıkmaz; döngü sessizce hiç çalışmaz.
Ders 5: Dizi ve döngü: bütün takım →
for'da let'i unutmak: hata yok ama i sızıyor
Sayacı let olmadan yazınca: for (i = 0; ...). Şu an yazdığın dosyalarda JavaScript bunu hata saymaz; i adlı kutuyu kendisi, bütün dosyanın görebileceği biçimde açar.
Ders 5: Dizi ve döngü: bütün takım →
Commit mesajını tırnaksız yazmak
git commit -m komutunda mesajın tırnaklarını unutunca. Kayıt alınmaz; mesajın içeriğine göre iki farklı hata görürsün:
Ders 5: Dizi ve döngü: bütün takım →
undefined ya da NaN: return yerine console.log yazmak
Fonksiyon sonucu ekrana yazıyor ama geri vermiyorsa. Ekranda doğru sayıyı gördüğün için fonksiyonun çalıştığını sanırsın; sonucu kullandığın yere ise undefined gelir. undefined ile hesap yaparsan sonuç NaN olur.
Ders 6: return ve ilk mini proje: takım savaşı →
Döngünün içinde erken return false
"Takımda canlı var mı?", "listede Garen var mı?" gibi arama fonksiyonlarında return false'u döngünün içine, else'e yazınca. Fonksiyon yalnız ilk elemana bakıp karar verir. Hata mesajı çıkmaz, cevap sessizce yanlış olur.
Ders 6: return ve ilk mini proje: takım savaşı →
return'den sonra yazılan satır hiç çalışmıyor
Bir satırı return'ün altına yazınca. return fonksiyonu bitirdiği için o satıra hiç inilmez. Hata mesajı çıkmaz; VS Code satırı soluk gösterir ve üstüne gelince Unreachable code detected der.
Ders 6: return ve ilk mini proje: takım savaşı →
Hasar küsuratlı çıkıyor: Math.random() * 6 tam sayı değil
Math.random()'ı bir sayıyla çarpıp tam sayı elde ettiğini sanınca.
Ders 6: return ve ilk mini proje: takım savaşı →
Rastgele sayı hep 0 çıkıyor
Math.floor'un parantezini yanlış yerde kapatınca.
Ders 6: return ve ilk mini proje: takım savaşı →
Hasar NaN çıkıyor: Math.random parantezsiz
Math.random'ı çağırmayı, yani () koymayı unutunca.
Ders 6: return ve ilk mini proje: takım savaşı →
${kda} olduğu gibi ekrana çıkıyor
Yuvayı çift ya da tek tırnaklı metnin içine yazınca. Hata mesajı çıkmaz; program çalışır ama yanlış yazar.
Ders 9: Metinler ve sayılarla çalışmak →
Sonuç NaN çıkıyor ama hata mesajı yok
Hesaba sayıya çevrilemeyen bir metin ya da undefined girince: yanlış yazılmış bir obje alanı, split'ten beklenenden az parça, virgüllü bir sayı ("3,5").
Ders 9: Metinler ve sayılarla çalışmak →
Metot çalıştı ama metin değişmedi
Metodun sonucunu bir yere koymayınca. Hata mesajı yok, metin eski hâliyle kalır.
Ders 9: Metinler ve sayılarla çalışmak →
Ekrana [Function: toUpperCase] yazıyor
Metodu parantezsiz yazınca. Parantez yoksa metot çalışmaz; JavaScript sana metodun kendisini gösterir. Ders 3'teki parantezsiz fonksiyon çağrısının aynısı.
Ders 9: Metinler ve sayılarla çalışmak →
Türkçe metin karşılaştırması tutmuyor (İ ve i)
Türkçe metni toLowerCase ya da toUpperCase ile çevirip karşılaştırınca. "İ" küçültülünce iki karakterli bir i̇ olur, "i" büyütülünce noktasız I olur.
Ders 9: Metinler ve sayılarla çalışmak →
Süslü parantezli ok fonksiyonu undefined döndürüyor
Tek satırlık bir ok fonksiyonunu sonradan süslü parantezle açıp return yazmayı unutunca. Hata mesajı yok: program çalışır ama sonuç undefined gelir.
Ders 10: Fonksiyonlar derinlemesine →
Parametre dışarıdaki değişkeni gölgeliyor, değer değişmiyor
Parametreye dışarıdaki değişkenle aynı adı verip fonksiyonun içinde değiştirince, dışarıdakinin de değişeceğini sanınca. Hata mesajı yok; yalnızca sonuç yanlış.
Ders 10: Fonksiyonlar derinlemesine →
Çıktıda [Function (anonymous)]: fabrikayı çağırmayı unutmak
Fabrika fonksiyonunu parantezsiz atayınca. Hata mesajı yok; sayı beklerken fonksiyon yazdırılır.
Ders 10: Fonksiyonlar derinlemesine →
map sonucu [ undefined, … ] çıkıyor
map'e süslü parantezli bir callback verip return yazmayı unutunca. Program hata vermez, sessizce yanlış sonuç üretir; bu yüzden fark etmesi zordur.
Ders 11: Dizi metotları: map, filter, find, reduce →
map yalnızca yazdırmak için kullanılmış
Bir diziyi ekrana yazdırmak için forEach yerine map kullanınca. Hata mesajı çıkmaz, ekrana yazma da olur; ama map boşuna yeni bir dizi üretir.
Ders 11: Dizi metotları: map, filter, find, reduce →
sort diziyi hiç sıralamadı
Karşılaştırma fonksiyonu sayı yerine true ya da false döndürünce: (a, b) => a > b. Eski öğreticilerde bu yazımı görebilirsin. Node'da hiçbir şeyi sıralamaz, hata da vermez:
Ders 11: Dizi metotları: map, filter, find, reduce →
sort asıl diziyi sessizce değiştirdi
Sıralanmış bir kopya isteyip sort'u doğrudan asıl dizide çağırınca. Hata mesajı çıkmaz; asıl dizinin sırası değişir ve ona güvenen kod yanlış çalışır.
Ders 11: Dizi metotları: map, filter, find, reduce →
Satır [ ile başlayınca önceki satıra yapışır
Noktalı virgül kullanmadığın kodda bir satır [ ile başladığında. JavaScript satır sonunu her zaman "komut bitti" saymaz; sonraki satır [ ile başlıyorsa onu önceki satırın devamı sanar.
Ders 12: Obje ve dizilerde ileri teknikler →
Kopyayı değiştirdim, asıl obje de değişti
const kopya = asil yazınca ya da iç içe veride { ...asil } ile kopya alıp kopyanın içteki dizisini veya objesini değiştirince. Hiçbir mesaj çıkmaz; program çalışır ama yanlış çalışır. Belirtisi: hiç dokunmadığını…
Ders 12: Obje ve dizilerde ileri teknikler →
|| sıfırı silip yedek değeri koyuyor
Yedek değeri || ile verince, 0, "" ya da false gerçek ve geçerli bir değerken. Hata mesajı çıkmaz; yalnız sonuç yanlıştır.
Ders 12: Obje ve dizilerde ileri teknikler →
JSON metnini parse etmeden kullanmak
JSON metnini obje sanıp alanlarını okumaya kalkınca. Hata çıkmaz; alanlar undefined, hesaplar NaN gelir. JSON bölümünde kayit.isim örneğiyle gördün.
Ders 12: Obje ve dizilerde ileri teknikler →
throw ile metin fırlatmak
throw new Error("...") yerine yalnızca throw "..." yazınca. JavaScript buna izin verir, ama fırlattığın şey bir hata objesi değil, düz bir metin olur.
Ders 13: Hatalarla barışmak: try, catch, throw →
Boş catch: hata kayboldu, sonuç yanlış
catch bloğunu boş bırakınca. Program çökmez, hiçbir şey söylemez; ama sonuç sessizce yanlış olur.
Ders 13: Hatalarla barışmak: try, catch, throw →
catch yanlış yazılan adı yuttu, yanlış mesaj verdi
try'ın içinde bir adı yanlış yazınca (altin yerine altn). JavaScript ReferenceError fırlatır, catch ise hangi hatayı yakaladığına bakmadan kendi cümlesini yazar. Program çökmez ama yanlış şey söyler.
Ders 13: Hatalarla barışmak: try, catch, throw →
Error [ERR_MODULE_NOT_FOUND]: Cannot find module
Göreli yolda uzantıyı unutunca ya da dosya adını yanlış yazınca.
Ders 14: Modüller ve npm →
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'dukkan.js'
Kendi dosyanı alırken yolun başına ./ koymayı unutunca.
Ders 14: Modüller ve npm →
npm.ps1 cannot be loaded because running scripts is disabled on this system
Windows'ta PowerShell terminalinde npm yazınca. Bu kart kalıcı çözümü anlatıyor.
Ders 14: Modüller ve npm →
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'picocolors'
Paketi kurmadan import edince, başka bir klasörde kurunca ya da node_modules klasörü yokken (ör. projeyi GitHub'dan yeni indirmişken).
Ders 14: Modüller ve npm →
npm error Missing script: "baslat"
package.json'da olmayan bir betiği çalıştırmak isteyince (adı yanlış yazınca ya da betiği eklemeyi unutunca).
Ders 14: Modüller ve npm →
npm error code EJSONPARSE
package.json'u elle düzenlerken virgülü ya da tırnağı unutunca. Aşağıdaki dosyada 7. satırın sonunda virgül yok:
Ders 14: Modüller ve npm →
npm error enoent Could not read package.json
npm komutunu package.json'un olmadığı bir klasörde çalıştırınca. En sık sebep, terminalin hâlâ C:\kod\ogren'de olması.
Ders 14: Modüller ve npm →
npm error code E404
Paket adını yanlış yazınca: depoda o adda bir paket yok.
Ders 14: Modüller ve npm →
forEach içindeki await beklenmiyor
Bir dizinin her elemanı için asenkron bir iş yapıp hepsini beklemek isteyince forEach'e async bir fonksiyon verirsen. Ok fonksiyonunun önüne de async yazılabilir: async (oyuncu) => { … }. Hata mesajı yok, ama sıra…
Ders 15: Asenkron JavaScript: Promise ve async/await →
Promise { <pending> } ya da [object Promise] yazıyor: await unutmak
async bir fonksiyonu çağırıp sonucunu await etmeden kullanınca. Hata mesajı yok; ama değer yerine Promise'in kendisini görürsün.
Ders 15: Asenkron JavaScript: Promise ve async/await →
UnhandledPromiseRejection: yakalanmamış ret
Bir Promise reddedildiğinde onu yakalayan bir catch (ya da try / catch) yoksa. Ret sebebi Error objesi değil de düz bir metinse Node bu uzun açıklamayı yazar:
Ders 15: Asenkron JavaScript: Promise ve async/await →
Çıktıda [object Promise] görmek
rl.question'ın önüne await yazmayı unutunca.
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
Error [ERR_USE_AFTER_CLOSE]: readline was closed
rl.close()'dan sonra yeniden rl.question çağırınca.
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
Error [ERR_MODULE_NOT_FOUND]: Cannot find module
import satırındaki dosya yolunda .js uzantısını unutunca: from "./oyuncu".
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
Düşman canı 0 ile doğuyor
Düşmanı şablondan kopyalamadan kullanınca: const dusman = sablon. Hata mesajı yok, ama oyun bozuk:
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
Error: ENOENT: no such file or directory
Var olmayan bir dosyayı okumaya çalışınca. ENOENT (error: no entry), "böyle bir dosya ya da klasör yok" demek; Ders 14'te npm'in mesajında görmüştün. Kendin görmek için önce VS Code'da kayit.json'un adını…
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
Warning: Detected unsettled top-level await
En üst düzeydeki bir await'in beklediği Promise hiç sonuçlanmadan program bitince. Burada question bir cevap bekliyordu ama girdi bitmişti; cevap asla gelmeyecekti.
Ders 17: Blok 2 projesi: terminalde metin tabanlı oyun →
Bu siteye ulaşılamıyor / This site can’t be reached
Olmayan bir alan adına gidince, örneğin adı yanlış yazınca: DNS bir numara bulamaz, tarayıcının bağlanacağı bir yer kalmaz. Denemek için adres çubuğuna başıyla birlikte https://xdd.bbay yaz. Yalnız xdd.bbay yazarsan…
Ders 18: Web nasıl çalışır? →
Access to fetch at 'file:///…' has been blocked by CORS policy
Çift tıklayarak (file:// ile) açtığın bir sayfada fetch ile başka bir dosya isteyince:
Ders 18: Web nasıl çalışır? →
Open a folder or workspace... (File -> Open Folder)
VS Code'da klasör açmadan, yalnız bir dosya açıkken Go Live'a basınca. Live Server bir klasörü yayınlar; klasör yoksa neyi yayınlayacağını bilemez.
Ders 18: Web nasıl çalışır? →
Refused to apply style from '…' because its MIME type ('text/html') is not a supported stylesheet MIME type
'teki dosya adını yanlış yazınca (stil.ccs). Sayfa stilsiz, düz siyah beyaz görünür.
Ders 18: Web nasıl çalışır? →
Türkçe harfler bozuk: hoÅŸ geldin
satırı yoksa ve sunucu da kodlamayı söylemiyorsa. Tarayıcı tahmin eder ve eski bir Batı ya da Türkçe kodlama seçer: UTF-8'de iki bayt tutan her Türkçe harf iki garip işarete dönüşür, sekmedeki başlık da İlk sayfam olur.
Ders 18: Web nasıl çalışır? →
Değişiklik sayfaya yansımıyor
Dosyayı değiştirip kaydetmeden tarayıcıyı yenileyince. Tarayıcı da sunucu da diskteki dosyayı okur, VS Code'da kaydetmediğin hâli bilmez; Live Server da yalnız kaydedince yeniler.
Ders 18: Web nasıl çalışır? →
Değiştirdiğin dosya başka, açtığın dosya başka
Bilgisayarında aynı adlı iki dosya varsa (indirilenler klasöründe bir index.html, C:\kod\web-ilk'te bir tane) ya da sunucuyu yanlış klasörde başlatınca. Örneğin npx serve'ü C:\kod'da çalıştırırsan sayfan yerine…
Ders 18: Web nasıl çalışır? →
Sayfa yerine dosya listesi açılıyor: index.html.txt
Dosyayı Dosya Gezgini'nde Yeni → Metin Belgesi (New → Text Document) ile oluşturup adını index.html yapınca. Uzantılar gizliyse gerçek adı index.html.txt olur: Ders 0'daki uzantı tuzağı. Çift tıklayınca tarayıcı…
Ders 18: Web nasıl çalışır? →
Fonksiyonu çağırıp vermek: altinEkle()
Dinleyiciye fonksiyonun adı yerine onun çağrısını verince:
Ders 22: DOM: JavaScript sayfayla konuşuyor →
Kutudaki yazı boş geliyor: input'u textContent ile okumak
Bir input'un içindekini textContent ile okumaya çalışınca:
Ders 22: DOM: JavaScript sayfayla konuşuyor →
Betik hiç çalışmıyor: 404 (Not Found) ve Refused to execute script
içindeki dosya adı yanlış yazılınca (sayc.js) ya da dosya başka klasördeyse. Sayfa açılır ama kodun hiç çalışmaz, console.log'ların bile. Console'a iki kırmızı satır düşer:
Ders 22: DOM: JavaScript sayfayla konuşuyor →
Eklediğin satır bir an görünüp kayboluyor
submit dinleyicisinde olay.preventDefault() yoksa. Hata mesajı çıkmaz; kutular boşalır, liste sıfırlanır ve adres çubuğuna ?sampiyon=Ahri&… gibi bir ek gelir.
Ders 23: Formlar, kullanıcı girdisi ve localStorage →
"5" + 1 sonucu "51": girdiyi sayıya çevirmemek
Kutudan okuduğun değeri çevirmeden + ile bir sayıya eklediğinde. Hata mesajı çıkmaz, sonuç sessizce yanlıştır.
Ders 23: Formlar, kullanıcı girdisi ve localStorage →
Her eklemede eski satırlar bir kez daha görünüyor
ciz()'in ilk satırını, yani liste.replaceChildren()'ı unutunca. ciz her seferinde bütün diziyi yeniden yazar ama eski satırlar da yerinde kalır. Sayfayı açıp Ahri'yi, sonra Jinx'i ekleyince liste şu dört satır olur:
Ders 23: Formlar, kullanıcı girdisi ve localStorage →
[object Object]: objeyi JSON.stringify olmadan saklamak
setItem'a objeyi doğrudan verince. setItem onu metne çevirir; bir objenin metin hâli de [object Object]'tir (Ders 4'te metinle + yaparken görmüştün). Asıl veri kaybolmuştur; geri okumaya kalkınca JSON.parse patlar.
Ders 23: Formlar, kullanıcı girdisi ve localStorage →
Her maç eklenince öncekiler kayboluyor (aynı anahtarın üzerine yazmak)
Her kaydı aynı anahtarla tek tek saklarsan. setItem anahtar varsa sormadan üstüne yazar; elinde hep yalnız son kayıt kalır.
Ders 23: Formlar, kullanıcı girdisi ve localStorage →
Wukong'un resmi gelmiyor
Resim adresini şampiyonun adından (name) kurunca. Konsolda hata yoktur; 173 kartın 152'sinde resim gelir, 21'inde boşluk kalır.
Ders 24: Tarayıcıdan veri çekmek: fetch ve API →
Sayaç 15 diyor, ekranda 345 kart var
ciz içindeki liste.textContent = "" satırını unutunca. Hata mesajı yoktur, sayaç da doğrudur; ama her harfte yeni kartlar eskilerin altına eklenir.
Ders 24: Tarayıcıdan veri çekmek: fetch ve API →
GET …/champion.json 403 (Forbidden)
Adresteki sürüm, dil kodu ya da dosya adı yanlış olunca. Data Dragon'da olmayan her dosya 403 (Forbidden, yasak) döndürür; çoğu site böyle bir durumda 404 (Not Found, bulunamadı) döndürür. Dersteki sayfada ${surum}…
Ders 24: Tarayıcıdan veri çekmek: fetch ve API →
Kartlarda İngilizce unvanlar var
Adresteki dil kodu en_US kalınca; çoğu zaman internette bulduğun bir örneği olduğu gibi kopyaladığında. Hata mesajı yoktur; Ahri'nin kartında "Dokuz Kuyruklu Tilki" yerine "the Nine-Tailed Fox" yazar.
Ders 24: Tarayıcıdan veri çekmek: fetch ve API →
hidden yazdım ama öğe hâlâ görünüyor
Bir öğeye hem hidden niteliği verip hem de CSS'te display değeri (grid, flex, block) yazınca. hidden aslında tarayıcının kendi stil dosyasındaki bir display: none kuralıdır. Senin stil dosyandaki kurallar…
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
Access to script at 'file:///…' from origin 'null' has been blocked by CORS policy
index.html dosyasına çift tıklayıp açınca. Adres çubuğunda http://127.0.0.1:5500 yerine file:///C:/kod/ansiklopedi/index.html yazar, sayfada "Yükleniyor…" takılı kalır ve konsolda şu iki satır çıkar:
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
Failed to resolve module specifier "api.js" ve 404 (Not Found)
import satırındaki yolu yanlış yazınca. Başında ./ olmayan bir yol yazarsan tarayıcı onun bir dosya mı, bir paket adı mı olduğunu bilemez:
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
Arama kutusunda Enter'a basınca liste sıfırlanıyor
59-61. satırlardaki submit dinleyicisini yazmazsan. Filtreler bir içinde; arama kutusundayken Enter'a basmak formu gönderir. Tarayıcı da formu gönderirken sayfayı yeniden yükler.
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
Geri dönünce kutularda eski filtre yazıyor ama liste hepsini gösteriyor
Formda autocomplete="off" yoksa ve tarayıcı geri dönülen sayfayı baştan yüklerse. Tarayıcı baştan yüklerken bir iyilik yapmaya çalışır: form kutularını son hâlleriyle doldurur. Ama JavaScript de baştan başlar ve…
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
The requested module './api.js' does not provide an export named 'sampiyonuGetir'
import satırına bir adı yanlış yazınca. 1. satıra sampiyonGetir yerine sampiyonuGetir yazdığımızda sayfa hiç açılmadı, "Yükleniyor…" takılı kaldı:
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
Yıldıza basınca klavye odağı kayboluyor
Yıldız tıklamasında yalnızca o düğmeyi güncellemek yerine bütün listeyi baştan çizince. İlk akla gelen yazım bu:
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
Pages'te stil ve betik gelmiyor: 404 (Not Found)
index.html'de yolları / ile başlatınca: href="/stil.css", src="/js/uygulama.js". Bilgisayarında her şey çalışır; Pages'te sayfa çıplak HTML gibi görünür ve "Yükleniyor…" takılı kalır.
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
404 There isn't a GitHub Pages site here.
Site adresini açınca sayfa yerine GitHub'ın kendi 404 sayfası geliyor ve "There isn't a GitHub Pages site here." ("burada bir GitHub Pages sitesi yok") yazıyorsa. Üç olası sebep:
Ders 25: Blok 3 projesi: şampiyon ansiklopedisi →
Error: EISDIR: illegal operation on a directory, read
Dosya bekleyen bir fonksiyona klasör verince. EISDIR "error: is directory", yani "bu bir klasör" demek.
Ders 29: Dosya sistemi, ortam değişkenleri ve gizli bilgiler →
Error: ENOENT: no such file or directory, open '…\kayitlar\mac-1.json'
Var olmayan bir klasörün içine dosya yazmaya çalışınca. Ders 17'de aynı hatayı okurken görmüştün; bu kez yazarken çıkıyor.
Ders 29: Dosya sistemi, ortam değişkenleri ve gizli bilgiler →
node: .env: not found
--env-file ile verdiğin dosya yoksa: adı farklıysa (env, .env.txt), başka bir klasördeyse ya da hiç oluşturulmadıysa. Node programı hiç başlatmaz. Dosya, terminalin çalışma klasörüne göre aranır.
Ders 29: Dosya sistemi, ortam değişkenleri ve gizli bilgiler →
Error: YONETICI_ANAHTARI ayarı yok. .env dosyasına bak.
Bu mesajı ayarlar.js'te sen yazdın. .env'de anahtar yoksa, boşsa ya da sunucuyu .env'i okumayan bir komutla başlattıysan çıkar. En sık sebep npm run dev yerine npm start yazmak:
Ders 29: Dosya sistemi, ortam değişkenleri ve gizli bilgiler →
Error: listen EACCES: permission denied 3000;
.env'de port satırının sonuna noktalı virgül koyunca: PORT=3000;. Değer "3000;" olur. Node sayıya çevrilemeyen bir metni port numarası saymaz; onu, Windows'ta iki programın konuştuğu adlandırılmış bir hattın (named…
Ders 29: Dosya sistemi, ortam değişkenleri ve gizli bilgiler →
Yeniden deneme hiç çalışmıyor: return await yerine return
try içinden bir Promise'i await yazmadan döndürünce. Fark tek bir sözcük:
Ders 30: Dış API'lere bağlanmak →
push sonrası ekran güncellenmiyor
State'teki diziyi push, splice, sort ya da takim[0].yildiz = 2 gibi yerinde değiştiren bir işlemle değiştirip aynı diziyi setTakim(takim) ile verince. Hata mesajı yok; Console'a yazdırırsan dizi değişmiş görünür,…
Ders 41: State ve olaylar →
Eski değer tuzağı: iki çağrı, bir artış
Aynı olayda aynı state'i değerle iki kez değiştirince: setAltin(altin + 1) iki kez çalışır, altın yalnız 1 artar. Hata mesajı yoktur.
Ders 41: State ve olaylar →
Error: Could not resolve authentication method.
SDK anahtarı bulamayınca. En sık sebebi programı --env-file=.env olmadan çalıştırmak. .env'deki değişkenin adını yanlış yazmak (ANTROPIC_API_KEY) ya da değeri boş bırakmak da aynı hatayı verir.
Ders 47: Büyük dil modelleri ve ilk API isteğin →
.env: not found
--env-file=.env yazdın ama terminal başka bir klasördeyken, ya da dosyanın adı farklıyken (env, .env.txt).
Ders 47: Büyük dil modelleri ve ilk API isteğin →
error TS18047: 'mesaj.parsed_output' is possibly 'null'.
parsed_output'u null olup olmadığına bakmadan kullanınca. TypeScript, null gelebilecek bir değerin alanına doğrudan erişmene izin vermez.
Ders 48: İstem yazmak ve yapılandırılmış çıktı →
error TS1484: 'MacOzeti' is a type and must be imported using a type-only import
Bir tipi değerlerle aynı import satırında, type sözcüğü olmadan alınca.
Ders 48: İstem yazmak ve yapılandırılmış çıktı →
error TS2820: Type '"asistan"' is not assignable to type '"assistant" | "system" | "user"'.
Rol adını Türkçe ya da yanlış yazınca. API yalnız İngilizce rol adlarını tanır; SDK'nın tipi de bunu bilir.
Ders 48: İstem yazmak ve yapılandırılmış çıktı →
Error: ENOENT: no such file or directory, open 'C:\kod\sampiyonlar.json'
Programı proje klasörünün dışından çalıştırınca. readFile("sampiyonlar.json") dosyayı .ts dosyasının yanında değil, terminalin bulunduğu klasörde arar.
Ders 49: Araç kullanımı (tool use) →
Error: "Ahrii" adında şampiyon yok. Benzer adlar: Ahri
Araç hata fırlatıp kimse yakalamayınca. Program, modele cevap veremeden çöker.
Ders 49: Araç kullanımı (tool use) →
Error: Sahte istemcinin 4. istek için hazır yanıtı yok.
Döngüden çıkmayı unutunca. Örneğin cevabı return ile döndürmek yerine yalnız yazdırırsan döngü sürer:
Ders 50: Basit bir ajan yazmak →
ℹ tests 0: test dosyası bulunamadı
Test dosyasının adı node --test'in aradığı kalıba uymayınca. Örneğin kda.test.js yerine kdaTest.js yazınca:
Ders 53: Test yazmak ve kod kalitesi →
undefined !== 3: testte await unutmak
Asenkron fonksiyonun sonucunu await yazmadan kutuya koyup içine bakınca.
Ders 53: Test yazmak ve kod kalitesi →
generated asynchronous activity after the test ended
assert.rejects gibi Promise döndüren bir denetimin önüne await yazmayınca. Test, denetim bitmeden "geçti" diye kapanır; denetimin sonucu sonradan gelir.
Ders 53: Test yazmak ve kod kalitesi →
'console' is not defined no-undef
eslint.config.js'te languageOptions.globals bölümünü unutunca. ESLint varsayılan olarak yalnızca JavaScript dilinin kendi adlarını tanır; console ise Node'un (ve tarayıcının) eklediği bir addır. Düzeltilmiş…
Ders 53: Test yazmak ve kod kalitesi →
npm ci: package.json ile package-lock.json uyuşmuyor (are in sync)
package.json ile package-lock.json birbirini tutmayınca. En sık sebepler: package.json'ı elle değiştirip npm install çalıştırmamak ya da kilit dosyasını Git'e hiç eklememek. Bilgisayarında aynı hatayı npm ci yazarak…
Ders 53: Test yazmak ve kod kalitesi →
Döngüde var: bütün zamanlayıcılar aynı sayıyı yazıyor
var ile kurulan bir for döngüsünün içinde, döngü sayacını sonradan çalışacak bir fonksiyonda (zamanlayıcı, olay dinleyicisi) kullanınca. Hata mesajı yok, sonuç yanlış. Mülakatlarda en sık sorulan "bu kod ne yazar?"…
Ders 55: Mülakata hazırlık ve sonrası →
await olmadan try hatayı yakalamaz
try içinde bir async fonksiyonu çağırıp await yazmayı unutunca. Hata Promise'in içinde kalır, try bloğu çoktan bitmiş olur.
Ders 55: Mülakata hazırlık ve sonrası →
Metodu koparınca this kayboluyor: Cannot read properties of undefined (reading 'isim')
Bir metodu objeden alıp ayrı bir değişkene koyduğunda ya da başka bir fonksiyona verdiğinde (callback). Çağrı artık obje.metot() biçiminde olmadığı için metodun içinde this boş kalır.
Ders 55: Mülakata hazırlık ve sonrası →